5

我被迫使用从外部服务器加载的脚本。

该脚本基本上添加了一个元素<div class="myClass">并将一个click方法绑定到它。

问题是,在click与元素关联的函数中,它们最后有一个return false语句。

我也有自己的脚本,我正在尝试click使用$(document).on('click', '.myClass', function() { ... })

我的问题是他们的事件是之前触发的,并且return false他们的函数中没有触发我自己的click方法。

我已经尝试在他们之前加载我的脚本,但这并没有解决问题。我已经阅读了关于解除绑定然后重新绑定的信息,但我不确定这是一个好的选择,因为他们的代码可以随时更改。

还有什么我可以尝试的吗?

4

5 回答 5

5

您需要让您的处理程序函数返回 false .. 它可以防止事件冒泡。

在您的标签 html 中,您必须编写如下内容:

<button type="button" class="btn" onclick="myHandler(); return false;"></button>

或者,如果您使用 jQuery:

$(".btn").on('click', function (event){ 
    //do stuff..
    return false;
});
于 2013-09-06T10:03:36.750 回答
2

问题是事件委托取决于事件冒泡到您将处理程序绑定到的元素。当他们的处理程序返回 false 时,这可以防止冒泡。

添加后,您必须将处理程序直接绑定到元素:

$(".myClass").click(function() { ... });
于 2013-09-06T04:00:59.813 回答
1

我最近遇到了同样的问题。我如何修复它,我在该元素上添加了另一个类:

$(document).load(function() {
    $(".myClass").addClass("myNewClass");
});

然后将点击事件绑定到该类,如下所示:

$(document).on("click", ".myNewClass", function () { ... }); 

这对我有用,因为它用点击事件覆盖了myClass类。myNewClass

于 2013-09-06T04:02:00.277 回答
1

试试这个:

$(document).on('click', '.myClass', function(e) {
   e.preventDefault();
   ... 
   ...
})
于 2013-09-06T04:02:25.413 回答
0

在您的 onLoad 中,为什么不向 myClass div 添加一个新类,然后为新类设置一个事件侦听器。

$(".myClass").addClass("myClass2");

$(".myClass2").on('click', function() { ... })
于 2013-09-06T03:58:17.480 回答