Как реализовать событие Live Bind JQuery на MooTools? - PullRequest
3 голосов
/ 21 января 2010

Как мне сделать элементы, которые загружаются через ajax, принять события, связанные с тем же классом, в mootools 1.11?

Насколько я знаю, в jQquery, если ваш ajax-ответ состоит из чего-то вроде <div class='button'>,
если есть привязка событий, использующая live к $('.button'), эти события будут автоматически связываться.

Возможно ли это с MooTools 1.11?

Ответы [ 4 ]

7 голосов
/ 21 января 2010

Возможно, что-то подобное может сделать то, что вы ищете? Хотя я не уверен, что он будет работать с 1.11.

Element.implement({
    addLiveEvent: function(event, selector, fn){
        this.addEvent(event, function(e){
            var t = $(e.target);

            if (!t.match(selector)) return false;
                fn.apply(t, [e]);
        }.bindWithEvent(this, selector, fn));
    }
});

$(document.body).addLiveEvent('click', 'a', function(e){ alert('This is a live event'); });
1 голос
/ 06 ноября 2012

Вы можете использовать этот способ:

$(document.body).addEvent('click:relay(.filterButton)', function(){
// do something
});
1 голос
/ 15 февраля 2012

Это очень крутая идея, jQuery .live() работает аналогичным образом, но есть также проблема с пузырьками . Если какой-либо родитель прикрепил stopPropagation() к этому событию, ничего не происходит.

Я думаю, что идеальным решением является создание пользовательских событий, вот очень хороший пост о пользовательских событиях, написанный Николасом Закасом:

http://www.nczonline.net/blog/2010/03/09/custom-events-in-javascript/

Но в этом примере пока не реализовано всплытие событий. Некоторое пузырение, которое имеет запасной вариант для предотвращения, должно решить проблему.

1 голос
/ 31 января 2010

Anomareh находится на правильном пути.

Вы также хотели бы проверить элементы-предки цели события.

Я не уверен, работает ли это со всеми событиями, поскольку некоторые из них не всплывают (не уверен, как Mootools справляется с этим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...