Событие переопределения в jQuery назначено в MooTools

Один из компонентов сайта загружает скрипт с этим.

window.addEvent('domready', function(){ 
    $$('.kqreply').each(function(el){
        el.addEvent('click', function(e){
            e.stop();
            // SOMETHING ELSE.
    });
});

Загружается во внешний файл JS. После этого я загружаю декларацию в голову.

<script>
    jQuery(document).ready(function(){
        $$('.kqreply').each(function(el){
            el.removeEvent('click');
        });

        jQuery('.kqreply').unbind('click');

        jQuery('.kqreply').each(function(){
            jQuery(this).click(function(e){
                e.preventDefault();
                e.stopPropagation();
            });
        });
    });
</script>

Но событие, определенное в первом коде, все равно запускается. Как мне переопределить событие и запустить другой код?

1 ответ

Так что это API: https://github.com/mootools/mootools-core/blob/master/Source/Element/Element.Event.js#L83-L101

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

использовать либо

$$('.kqreply').removeEvents('click'); 
// or all mootools events...
$$('.kqreply').removeEvents();`

Вы можете получить доступ к отдельным функциям, которые вам не принадлежат, посредством хранения элементов.

el.retrieve('events')['keys']['click'] будет массивом всех привязанных fn к событию click.

Другие вопросы по тегам