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();
    }
});
Другие вопросы по тегам