最近我将jQuery升级到1.9,现在我的主要问题是将所有live()方法转换为on()。
我在一些情况下取得了成功,但我还有其他一些行为非常奇怪的方法。
以下面的例子为例:
$(document).on('click', '.clickReplace', function(e) {
e.preventDefault();
...
});
可以将“clickReplace”类分配给“a”,“span”或“div”标记,并且可以在ajax调用(动态)之后将其添加到DOM中。
当我使用上述内容时,每次点击页面上没有分配此类的任何链接都会触发e.preventDefault() - 我无法在页面之间导航 - 就像它绑定到' document'而不是文档树中具有指定类的元素。
知道可能导致它的原因以及如何使其发挥作用?
答案 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
}
});
它不会在你没有绑定它们的元素上运行,所以问题不在这里