gpt4 book ai didi

javascript - 条件触发所有事件,否则不触发

转载 作者:行者123 更新时间:2023-12-02 16:11:31 24 4
gpt4 key购买 nike

我正在现有的 JavaScript 之上工作(我无法更改),并且需要在提交上检查一些内容。

如果我的条件成立,则不应应用其他提交处理程序。

如果我的条件为 false,则应应用所有其他提交处理程序。

到目前为止我已经尝试过:

var form = jQuery('form'),
that = this,
events = $._data(form[0]).events['submit'];

form.off('submit');
form.on('submit', function (event) {
if (that.myCondition()) {
event.preventDefault();
event.stopPropagation();
return false;
} else {
console.log('Call these: ', events);
}
});

现在,事件此时始终为空。

当我调用 form.off('submit') 时它是空的,而且我也没有让它与深度克隆一起使用。

更新:在此jsfiddle您会看到这两个事件都被触发了。我希望其中一个(最好是我最后添加的)被解雇并阻止另一个被解雇。

最佳答案

如果我正确地理解了你的要求,你可以尝试像这样的讨厌的黑客

//the counter is just to demonstrate any condition
var counter = 0;
$('form').submit(function (e) {
console.log('master handler form');
//if counter is a multiple of 2 prevent other handlers
if (++counter % 2 == 0) {
//stop other submit handlers attached to the form
e.stopImmediatePropagation();
//stop propagation and default behavior
return false;
}
});

var form = jQuery('form'),
events = $._data(form[0]).events['submit'];

var tmp = events.pop();
events.unshift(tmp);

演示:Fiddle

关于javascript - 条件触发所有事件,否则不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com