我被迫使用从外部服务器加载的脚本。
此脚本基本上添加了一个元素<div class="myClass">
并将click
方法绑定到它。
问题是,在与元素关联的click
函数中,它们最后有一个return false
语句。
我也有自己的脚本,我正在尝试使用click
$(document).on('click', '.myClass', function() { ... })
方法
我的问题是他们之前触发了他们的事件,他们的函数中的return false
没有触发我自己的click
方法。
我尝试在他们的脚本之前加载我的脚本,但这并没有解决问题。 我已经读过关于取消绑定然后重新绑定的内容,但我不确定这是一个不错的选择,因为他们的代码随时都可能发生变化。
我还能尝试其他什么?
答案 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)
为什么不在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();
...
...
})