2011-03-12 65 views
2

我要防止“#”被使用,因为我使用jQuery做别的事情上点击插件...jQuery的点击(假)结合了功能

<a href="#" id="mylink">My Link</a> 

<script> 
    $('#mylink').somePlugin().click(false); 
</script> 

以上只要我需要阻止默认点击,就能很好地工作。

现在我有这样的事情下面,我想阻止默认点击行为

<a href="#" id="mylink">My Link</a> 

$('#mylink').click(function() { 
    // my code in here 
}); 

我只是不知道在哪里/如何将点击(假)到上面的代码。我尝试过的几件事情没有奏效。

我知道...我觉得自己像一个新手问这一个。

谢谢你!

回答

5

你需要做的:

$('#mylink').click(function (e) { 
     e.preventDefault(); 

     // the code here 
    }); 
+0

我正在使用它,但认为只有一种方法来合并click(false)。谢谢! – Sparky 2011-03-12 23:27:46

+0

没有必要加入click false,preventDefault是一个符合标准的函数,并且在jQuery中受益于跨浏览器兼容性保险(与所有jQuery funcitonality一样高),所以不需要正如所指出的那样,使用其他任何东西,stopPropagation来阻止事件冒泡,即如果你显示一个隐藏的嵌套ul,那么父li也会显示(如果隐藏)。 – 2011-03-12 23:52:02

+0

你可以简单介绍click(false)吗? – ManirajSS 2014-08-06 10:32:57

2
$('#mylink').click(function (e) { 
    return false; 
}); 
+0

为什么downvote?这似乎是一个合法的答案。 – 2011-03-12 23:16:10

+0

我没有downvote。 – Roman 2011-03-12 23:17:02

+0

e.preventDefault();是正确的方法。如果你返回false,你也会停止冒泡事件。 – 2011-03-12 23:18:13

2

不同的浏览器处理这个方式略有不同,但jQuery也尽力掩盖你的基地。还有,你应该知道的三件事情,至少他们的前两个应该怎样做才能防止正常的点击行为在尽可能多的浏览器中可能:

  1. return false;在你的点击处理程序结束(如上午suggested)将停止对许多浏览器(包括Internet Explorer和Google Chrome)中的链接进行常规点击操作。 return false;也将停止事件传播,这可能是也可能不是你想要的。这是常规的浏览器行为,与jQuery没有任何关系。

  2. e.preventDefault();,如通过suggested利亚姆是jQuery method防止被触发的默认操作。 “例如,点击的锚点不会将浏览器带到新的URL。”这仅影响当前项目

  3. e.stopPropagation();是另一个可以防止事件冒泡的jQuery method。例如,如果你在div中有一个锚点,并且div有一个钩住它的click事件,那么即使你停止锚点,div的click事件也会被触发 - 除非你调用这个方法。

数字2将涵盖几乎所有的浏览器,并与1和2的组合,你或多或少覆盖所有。如果你不想让这个事件在DOM树中冒泡,那么数字3是必需的,但是我习惯把它放在那里,因为大多数情况下,如果我想阻止点击元素的默认动作,我不会想要任何东西代码发生。

+0

很好的解释托马斯。 – Roman 2011-03-12 23:25:19

+1

@Thomas'preventDefault'和'stopPropagation'不是jQuery方法,但它们是由[DOM Events standard]定义的(http://www.w3.org/TR/DOM-Level-3-Events/#interface-事件)(他们已经有相当一段时间了)。请注意,jQuery规范化事件对象,以便这两种方法可以在所有浏览器中工作。 – 2011-03-12 23:34:46

+0

是的 - 非常好的解释。那么.click(false)适用于所有这些?我希望通过使用它,我只是让jQuery来处理它。 – Sparky 2011-03-12 23:36:11