jQuery on()方法,在页面的任何位置触发click和元素类名称

时间:2013-01-30 08:19:15

标签: jquery jquery-on

最近我将jQuery升级到1.9,现在我的主要问题是将所有live()方法转换为on()。

我在一些情况下取得了成功,但我还有其他一些行为非常奇怪的方法。

以下面的例子为例:

$(document).on('click', '.clickReplace', function(e) {
     e.preventDefault();
     ...
});

可以将“clickReplace”类分配给“a”,“span”或“div”标记,并且可以在ajax调用(动态)之后将其添加到DOM中。

当我使用上述内容时,每次点击页面上没有分配此类的任何链接都会触发e.preventDefault() - 我无法在页面之间导航 - 就像它绑定到' document'而不是文档树中具有指定类的元素。

知道可能导致它的原因以及如何使其发挥作用?

2 个答案:

答案 0 :(得分:1)

我真诚地向所有人道歉 - 你是绝对正确的 - 有一些不同的东西导致了这种行为,事实上我是用类传递对象而不是类名作为第二个参数(因为它是对象文字内部的一个方法,在外部调用,该参数指示应该触发哪个元素。

我这样做了,显然不会起作用:

$(document).on('click', $('.clickReplace'), function(e) {

感谢大家的参与。

答案 1 :(得分:0)

使用e.preventDefault()时应该小心。您实际上是在阻止链接上的click事件冒泡到达浏览器,这会导致您的链接停止响应。


回复评论 - 使用on相当于这样做:

$(document).click(function(e){
   if($(e.target).parents(".clickReplace").length>0){
      // run your code
   }
});

它不会在你没有绑定它们的元素上运行,所以问题不在这里