jQuery多次单击事件
我被迫使用从外部服务器加载的脚本。
这个脚本基本上添加了一个元素
并将
click
方法绑定到它。
问题是,在与元素关联的click
函数中,它们在结尾处有一个return false
语句。
我也有自己的脚本,我正在尝试使用$(document).on('click', '.myClass', function() { ... })
将click
方法添加到同一个元素中
我的问题是之前触发了它们的事件,并且它们的函数中的return false
不会触发我自己的click
方法。
我试过在我们的脚本之前加载我的脚本,但这并没有解决问题。 我已经阅读了关于取消绑定然后重新绑定的内容,但我不确定这是一个不错的选择,因为他们的代码随时都可能发生变化。
还有什么我可以尝试的吗?
问题是事件委托取决于冒泡到绑定处理程序的元素的事件。 当它们的处理程序返回false时,这会阻止冒泡。
在添加后,您必须将处理程序直接绑定到元素:
$(".myClass").click(function() { ... });
您需要使处理函数返回false ..它可以防止事件冒泡。
在您的标记html中,您必须编写如下内容:
或者如果你使用jQuery:
$(".btn").on('click', function (event){ //do stuff.. return false; });
在你的onLoad中为什么不向myClass div添加一个新类,然后为新类设置一个事件监听器。
$(".myClass").addClass("myClass2"); $(".myClass2").on('click', function() { ... })
我刚才遇到了同样的问题。 我是如何修复它的,我在该元素上添加了另一个类:
$(document).load(function() { $(".myClass").addClass("myNewClass"); });
而不是将点击事件绑定到该类,如下所示:
$(document).on("click", ".myNewClass", function () { ... });
这对我myNewClass
,因为它用myNewClass
click事件覆盖了myClass
类。
试试这个:
$(document).on('click', '.myClass', function(e) { e.preventDefault(); ... ... })