在MooTools中分配的jQuery中覆盖事件

时间:2013-12-30 08:47:53

标签: javascript-events mootools jquery mootools-events

其中一个网站组件使用此加载脚本。

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 个答案:

答案 0 :(得分:0)

所以这是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']将是click事件的所有绑定fn的数组。