防止调用函数
2011-12-18
8691
我有两部分脚本。
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 为真,我需要解除第 1 部分中已指定的事件的绑定,否则我需要调用第一个函数。
谢谢
更新:
谢谢。我不知道 stopImmediatePropagation()。但我觉得,一定有类似的东西 :)
但实际上,就我而言,它不起作用 :(
在 酒店描述 选项卡下,我有云旋转木马,当我单击非活动图像(不是正面图像)时,如您所见,我正在安慰自己,我在那里停止了立即传播(),但是事件却调用了:(
3个回答
如果您的处理程序是先注册的,那么您可以像这样使用
event.stopImmediatePropagation
:
$("mySelector").click(function(event) {
if(myCondition) {
event.stopImmediatePropagation();
}
})
请注意,这
也会
停止事件冒泡,因此它还会阻止调用父元素上的
click
处理程序。
更新: 如果这不起作用,那么您的处理程序将附加在您想要控制的处理程序之后。这个问题使解决方案变得更加困难。我建议看看您是否可以“在另一个人之前”绑定,否则您将不得不解除现有处理程序的绑定,然后通过保留对它的引用从您自己的处理程序中有条件地调用它。请参阅 jQuery 查找使用对象注册的事件处理程序 。
Jon
2011-12-18
无访问权限:
$("#mySelector").click(function() {
alert('you call me');
})
访问:
var myCondition = true, //try false too
fFirstFunction = $("#mySelector").data("events").click[0].handler;
$("#mySelector").unbind("click");
$("#mySelector").click(function() {
if(myCondition) {
alert(myCondition);
} else {
$("#mySelector").click(fFirstFunction);
}
});
查看 此 示例
noob
2011-12-18
您可以调用
$('mySelector').unbind('click');
来摆脱 所有 点击处理程序。如果您的脚本是在另一个脚本之后加载的(看起来是这样),那么应该可以做到这一点。但请注意,它会解除所有“点击”处理程序的绑定,因此请确保在添加您自己的处理程序之前调用它。
Pointy
2011-12-18