0

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

我在一些情况下取得了成功,但我还有一些其他的方法表现得很奇怪。

以以下为例:

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

'clickReplace' 类可以分配给 'a'、'span' 或 'div' 标记,并且可以在 ajax 调用后(动态)添加到 DOM。

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

知道可能是什么原因造成的,我应该怎么做才能使它起作用?

4

2 回答 2

1

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

我有这种方式,这显然是行不通的:

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

感谢大家的参与。

于 2013-01-30T08:39:55.557 回答
0

使用时应小心e.preventDefault()。您有效地阻止了链接上点击事件的冒泡到达浏览器,这就是导致您的链接停止响应的原因。


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

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

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

于 2013-01-30T08:27:58.047 回答