我有两部分脚本。
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 ???
}
})
整个问题是我无法访问part1 。所以我需要取消绑定第1部分中指定的事件,如果myCondition为true,否则我需要调用第一个函数。
由于
更新
谢谢。我不知道stopImmediatePropagation()。但我觉得,必须有类似的东西:)
但实际上在我的情况下它不起作用:(
在酒店描述标签下我有云旋转木马,当我点击非活动图像(不是正面图像)时,你可以看到我正在安慰我停止在那里停止传播(),但是但事件却要求:(
答案 0 :(得分:1)
无法访问:
$("#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);
}
});
查看this示例
答案 1 :(得分:1)
你可以打电话
$('mySelector').unbind('click');
摆脱所有点击处理程序。如果您的脚本在之后加载另一个(看起来就是这种情况),那么应该这样做。但请注意,它确实解除了所有“click”处理程序的绑定,因此请确保在添加自己的处理程序之前调用它。
答案 2 :(得分:1)
如果您无法确保首先附加处理程序,请尝试以下代码:
var events = $('mySelector').data("events"); //all handlers bound to the element
var clickEvents = events ? events.click : null;//all click handlers bound to the element
$('mySelector').unbind('click'); //unbind all click handlers
//bind your handler
$("mySelector").click(function(e) {
if (myCondition) {
//do what you want
} else {
//call other handlers
if (clickEvents) {
for (var prop in clickEvents)
clickEvents[prop].call(this, e);
}
}
})
<强>更新强>