我有两部分脚本。
Part 1 :
$("mySelector").click(function() {
alert('you call me');
})
Part 2 :
$("mySelector").click(function() {
if(myCondition) {
//how can i prevent calling the first function from here ???
}
})
整个问题是我无权访问第 1 部分。因此,如果 myCondition 为真,我需要取消绑定(bind)第 1 部分中指定的事件,否则我需要调用第一个函数。
谢谢
更新:
谢谢。我不知道 stopImmediatePropagation()。但我觉得,一定有这样的东西:)
但实际上在我的情况下它不起作用:(
在 酒店描述 选项卡下,我有云轮播,当我点击非事件图像(不是正面图像)时,如您所见,我正在安慰我在那里停止即时传播(),但是然而,事件调用:(
最佳答案
如果您的处理程序先注册,那么您可以使用 event.stopImmediatePropagation
像这样:
$("mySelector").click(function(event) {
if(myCondition) {
event.stopImmediatePropagation();
}
})
请注意,这也会停止事件冒泡,因此它还会阻止调用父元素上的click
处理程序。
更新:如果这不起作用,那么您的处理程序将附加在您要控制的处理程序之后。这是一个使解决方案变得更加困难的问题。我建议看看您是否可以“在其他人之前”绑定(bind),否则您将不得不取消绑定(bind)现有的处理程序,然后通过保留对它的引用从您自己的处理程序中有条件地调用它。参见 jQuery find events handlers registered with an object .
关于javascript - 防止调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8552257/