如何防止在 JQuery 中触发子事件
How to prevent child event from firing in JQuery
所以我有一个按钮
<input id="expandButton" type="submit" value="Expand" class="loadWindow"/>
我附加了两个事件处理程序。
function confirmContinue() {
return confirm("Do you want to expand window, might reload some information?");
}
$("input.loadWindow").click(function(event) {
showProcessingWindow(event);
}
$("#expandButton").click(function(event) {
var result = confirmContinue();
if (!result) {
event.preventDefault();
event.stopPropagaton();
}
}
我想阻止 "input.loadWindow" 在他们说取消时触发点击事件。
这就是现在正在发生的事情。
单击按钮 --> 确认触发 --> 我单击取消 --> 显示处理 window 仍然触发。
我想要这样
单击按钮 --> 确认触发 --> 我单击取消 --> 什么都不做。
试试这个:
$("#expandButton").click(function(event) {
if(confirm('Do you want to expand window, might reload some information?')){
// call your function here
}else{
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="expandButton" type="submit" value="Expand" class="loadWindow"/>
看起来 event.stopImmediatePropagation() 在这种情况下可行。
$("#expandButton").click(function(event) {
var result = confirmContinue();
if (!result) {
event.preventDefault();
event.stopImmediatePropagation();
}
}
Fiddle 演示- http://jsfiddle.net/w2vwn35x/1/
或者,使用标志。
var doShowWindow = true;
$("#expandButton").click(function(event) {
var result = confirmContinue();
if (!result) {
doShowWindow = false;
}
});
$("input.loadWindow").click(function(event) {
if(doShowWindow){
alert(1);
}
doShowWindow = true;
});
所以我有一个按钮
<input id="expandButton" type="submit" value="Expand" class="loadWindow"/>
我附加了两个事件处理程序。
function confirmContinue() {
return confirm("Do you want to expand window, might reload some information?");
}
$("input.loadWindow").click(function(event) {
showProcessingWindow(event);
}
$("#expandButton").click(function(event) {
var result = confirmContinue();
if (!result) {
event.preventDefault();
event.stopPropagaton();
}
}
我想阻止 "input.loadWindow" 在他们说取消时触发点击事件。
这就是现在正在发生的事情。 单击按钮 --> 确认触发 --> 我单击取消 --> 显示处理 window 仍然触发。
我想要这样 单击按钮 --> 确认触发 --> 我单击取消 --> 什么都不做。
试试这个:
$("#expandButton").click(function(event) {
if(confirm('Do you want to expand window, might reload some information?')){
// call your function here
}else{
return false;
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="expandButton" type="submit" value="Expand" class="loadWindow"/>
看起来 event.stopImmediatePropagation() 在这种情况下可行。
$("#expandButton").click(function(event) {
var result = confirmContinue();
if (!result) {
event.preventDefault();
event.stopImmediatePropagation();
}
}
Fiddle 演示- http://jsfiddle.net/w2vwn35x/1/
或者,使用标志。
var doShowWindow = true;
$("#expandButton").click(function(event) {
var result = confirmContinue();
if (!result) {
doShowWindow = false;
}
});
$("input.loadWindow").click(function(event) {
if(doShowWindow){
alert(1);
}
doShowWindow = true;
});