jQuery多次点击事件

时间:2013-09-06 03:55:40

标签: jquery javascript-events bind

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

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

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

我也有自己的脚本,我正在尝试使用click

向同一元素添加$(document).on('click', '.myClass', function() { ... })方法

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

我尝试在他们的脚本之前加载我的脚本,但这并没有解决问题。 我已经读过关于取消绑定然后重新绑定的内容,但我不确定这是一个不错的选择,因为他们的代码随时都可能发生变化。

我还能尝试其他什么?

5 个答案:

答案 0 :(得分:4)

你需要让你的处理函数返回false ..它可以阻止事件冒泡。

在你的标签html中,你必须写下这样的内容:

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

或者如果你使用jQuery:

$(".btn").on('click', function (event){ 
    //do stuff..
    return false;
});

答案 1 :(得分:1)

问题在于事件委托取决于冒泡到绑定处理程序的元素的事件。当它们的处理程序返回false时,会阻止冒泡。

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

$(".myClass").click(function() { ... });

答案 2 :(得分:0)

你的onLoad中的

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

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

$(".myClass2").on('click', function() { ... })

答案 3 :(得分:0)

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

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

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

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

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

答案 4 :(得分:0)

试试这个:

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