在停止元素的同时插入元素的确认行为'的其他事件处理程序
insert confirmation behavior for an element while stopping the element's other event handlers
目标:我希望能够将给定元素的确认行为与它可能绑定的其他事件处理程序解耦
var someApp = {
"init": function(){
$("a").click(someApp.doAnchorStuff);
$("button").click(someApp.doButtonStuff);
$("#submitButton").click(someApp.doSubmitStuff);
$("a, button, #submitButton").click(someApp.confirmAction);
},
"doAnchorStuff": function(){//stuff},
"doButtonStuff": function(){//stuff},
"doSubmitStuff": function(){//stuff},
"confirmAction" : function(){
//intercept the flow of control and freeze everything, no other
//handlers on the elements this is being triggered on get called
//display confirm dialog.
//IF user confirms, unfreeze, let the other handlers get triggered.
//If Not, do not let other event handlers get triggered
}
}
$(function(){
someApp.init();
});
如果这没有道理,我很乐意澄清。
一个非工作小提琴的例子:)http://jsfiddle.net/7jbt9/
要实现这一点,需要做两件事:
-
需要首先附加confirmAction单击处理程序这样做将使它在链中首先执行。
-
对传递给回调函数的事件对象调用stopImmediatePropagation()方法这将停止执行该事件的任何其他回调。
"confirmAction": function(e) { if (!confirm("Continue?")) { e.stopImmediatePropagation(); } }
相关文章:
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 如何在元素中处理鼠标事件,但不能在其子元素上处理
- 如何使用角度事件处理程序引用输入元素的值
- Meteor - 从另一个模板事件处理程序访问 DOM 元素
- 在动态创建的元素中包含参数的事件处理程序
- 测试 JavaScript Zombie 事件处理程序或 DOM 元素
- 有没有办法用Javascript找到元素的事件处理程序
- 用于逐步增强的“select”元素的JavaScript中的事件处理程序
- Javascript:为元素设置适当的事件处理程序
- jQuery点击事件处理类元素和内部元素
- 我在jQuery事件处理和隐藏/显示图像元素方面做错了什么
- 如何为将通过AJAX加载的元素声明事件处理程序
- 元素事件处理程序到EXT.js面板中
- 如何在更改的事件处理程序中忽略Polymer元素上默认属性的初始覆盖
- AngularJS:如何从指令添加的元素中删除事件处理程序
- 将事件处理程序分配给元素集合
- 通过使用不同的选择器选择元素,为元素提供多个事件处理程序
- Jquery为多个元素和事件查询一个事件处理程序
- 显示绑定到动态生成的元素的所有事件处理程序
- jquery.data 在存储元素时是否跳过事件处理程序