canjs:not-selector в триггерах событий
Я застрял в следующей ситуации.
Сначала я добавляю обработчик события click ко всем элементам страницы, который вызывает небольшое всплывающее окно. Я не могу изолировать всплывающее окно от этого *-селектора, поэтому оно открывает всплывающее окно для всплывающих окон и так далее.
Я пробовал следующее:
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 ответ
Я думаю, что вам нужно было бы прикрепить один обработчик события щелчка к телу и один обработчик события щелчка к.popup. Обработчик щелчка тела откроет всплывающее окно. Обработчик щелчков.popup фиксирует событие, чтобы оно не распространялось на элемент body.
var controller = can.Control.extend({
'click': function ($el, event) {
/* open popup now */
},
'.popup click': function ($el, event) {
event.stopPropagation();
}
});