如何将阻止默认调用传递给其他事件
How to pass preventDefault call to other event?
当事件发生时,其名称会触发其他一些事件。在某些情况下,第二个处理程序可以调用 preventDefault
。如何将此调用传递到原始事件?
https://jsfiddle.net/edgv8qur/1/
$("button").click(function (event) {
$("body").trigger("some-custom-event");
// If the custom event was prevented, prevent original one too
if (true) { // How to check?
event.preventDefault();
}
})
$("body").on("some-custom-event", function (event) {
if (Math.random() > .5) {
console.log("prevent");
event.preventDefault();
} else {
console.log("allow");
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Test</button>
PS:俄语中的相同问题。
您可以将参数数组传递给trigger()
这些参数将传递给 on()
中设置的事件处理程序。以下是您的操作方法:
$("button").click(function (event) {
function cb(prevent) {
// If the custom event was prevented, prevent original one too
if (prevent) {
event.preventDefault();
}
}
$("body").trigger("some-custom-event", [cb]);
})
$("body").on("some-custom-event", function (event, cb) {
if (Math.random() > .5) {
console.log("prevent");
event.preventDefault();
cb(true);
} else {
console.log("allow");
}
})
您可以在此处了解有关trigger()
的更多信息。
更新:
如果您不想编辑处理程序,这是要走的路:
$("button").click(function (event) {
var event = jQuery.Event('some-custom-event');
$("body").trigger(event);
if (event.isDefaultPrevented()) {
event.preventDefault();
console.log("Prevented");
} else {
console.log("Allowed");
}
})
$("body").on("some-custom-event", function (event) {
if (Math.random() > .5) {
console.log("prevent");
event.preventDefault();
} else {
console.log("allow");
}
})
event.isDefaultPrevented()
返回是否曾经在此事件对象上调用过 event.preventDefault()。
相关文章:
- Phonegap iOS-设备准备不发射其他事件做
- 当其他事件发生时,用javascript隐藏的文本框将变为可见
- ext.js中还有其他事件我应该使用吗
- 更改时事件会触发其他事件
- DomElement.click() 事件在 chrome 中不起作用,但其他事件可以工作
- jquery在html属性中添加函数回调,以便在其他事件中调用
- 如何将阻止默认调用传递给其他事件
- 在其他事件处理程序之后实现事件处理程序
- 仅当没有其他事件同时触发时,才触发 Javascript 单击/触摸事件
- 在文档准备就绪之前,Javascript onload 事件和其他事件
- jQuery append - html write不会触发其他事件
- jQuery调用其他事件处理程序中的事件处理程序函数
- 有没有办法停止 dojo onBlur 事件处理程序中的所有其他事件
- 在 JavaScript 中从一次点击事件到其他事件获取价值
- 防止事件与其他事件一起触发
- NextTick() 不起作用 [将 CPU 密集型任务与其他事件交错]
- 如何避免由其他事件触发的多次窗口大小调整
- 如果中途发生其他事件,如何重置clickToggle功能
- 在其他事件发生时停止执行某个事件
- 在停止元素的同时插入元素的确认行为'的其他事件处理程序