0

我一直被以下情况困住。

首先,我将点击事件处理程序添加到页面的所有元素,这会调用一个小弹出窗口。我无法将弹出窗口与此 *-selector 隔离开来,因此它将弹出窗口打开到弹出窗口等。

我尝试了以下方法:

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

是否有任何提示可以隔离此问题。除了弹出窗口内的元素之外,所有其他元素都确实需要点击处理程序,Yours Heikki

4

1 回答 1

1

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

var controller = can.Control.extend({
    'click': function ($el, event) {
        /* open popup now */
    },
    '.popup click': function ($el, event) {
        event.stopPropagation();
    }
});
于 2014-09-20T13:02:46.257 回答