canjs:事件触发器中的not-selector

时间:2014-09-20 12:30:19

标签: jquery canjs canjs-control

我一直坚持以下情况。

第一,我将点击事件处理程序添加到页面的所有元素,这会调用一个小弹出窗口。我无法将弹出窗口与此*选择器隔离,因此它会弹出弹出窗口等等。

我尝试过以下方法:

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');

是否有任何提示可以隔离此问题。弹出窗口内的元素旁边的所有其他元素确实需要单击处理程序, 你的 海基

1 个答案:

答案 0 :(得分:1)

我认为您需要做的是将一个单击事件处理程序附加到正文,并将一个单击事件处理程序附加到.popup。正文单击处理程序将打开弹出窗口。 .popup单击处理程序将捕获该事件,以便它不会传播到body元素。

var controller = can.Control.extend({
    'click': function ($el, event) {
        /* open popup now */
    },
    '.popup click': function ($el, event) {
        event.stopPropagation();
    }
});