0
我一直坚持以下情况。canjs:事件触发器中的非选择器
1st我将点击事件处理程序添加到页面的所有元素,它调用一个小的弹出窗口。我无法从这个*选择器中分离弹出窗口,因此它会打开弹出窗口,等等。
我已经试过如下:
var controller = can.Control.extend({
'*:not(.popup *) click': function(el, event) { //This does not work
$(el).openPopUp()
//pseudo code, opens the popup in to <div class"popup"><input /><input /></div>
},
});
var c = new controller('body');
是否有隔离这个问题的任何提示。真正需要的点击处理程序内弹出的元素旁边的所有其他元素, 此致 科瓦莱宁
我得到了一个AHA时刻。订单确实很重要。事件是一个队列,浏览器按照代码中给出的顺序抓取所有事件。 如果两个处理程序都连接到相同的元素,如果首先执行Click处理程序并在此之后它通过.popup点击处理程序。 event.stopPropagation是可以的,但我认为我需要去除其他处理程序,同时我正在处理弹出窗口。 – 2014-09-23 11:14:58
事件从目标到其父母“气泡”。如果.popup被点击,那么.popup点击处理程序将运行,并且(如果事件没有停止传播),body click处理程序将在之后运行。 – 76484 2014-09-24 02:18:03