在jQuery中,如何触发mootools中添加的元素事件

In jQuery how to fire an elements event added in mootools?

本文关键字:添加 元素 mootools 事件 何触发 jQuery      更新时间:2023-09-26

我有一个MooTools脚本(请不要问为什么..(其中元素被添加到mouseenter事件中。在jQuery中,我在一个花哨的框中打开/显示这些元素。当它弹出时,mouseenter 事件不会首先被触发,因为光标最终已经在元素上,具体取决于用户单击以打开花式框的位置。但是jQuery鼠标移动事件确实在这些事件上触发。

我可以在 MooTools 文件中添加一个触发 mouseenter 事件的 mousemove 事件,但为了学习:我将如何触发元素事件函数(并利用 this-reference(?这对我不起作用。

嗓哞��

$$('.foo').addEvents({
    mouseenter: function(){
        console.log('fired!'); // never does ):
        // stuff happens here
    }
});

j查询:

$('#bar').fancybox({
    onComplete: function() {
        $('.foo').unbind('mousemove').mousemove(function() {
            var el = this;
            console.log('mousemoved');
            $('.foo').unbind('mousemove');
            // does not work:
            (function($$) {
                $$(this).fireEvent('mouseenter', $(this));
            })(document.id);
            // neither does this:
            var event;
            if (document.createEvent) {
                event = document.createEvent("HTMLEvents");
                event.initEvent("mousemove", true, true);
            } else {
                event = document.createEventObject();
                event.eventType = "mousemove";
            }
            event.eventName = "mousemove";
            event.memo = {};
            if (document.createEvent) {
                this.dispatchEvent(event);
            }
            else {
                this.fireEvent("on" + event.eventType, event);
            }
            // whats the solution?
            // something like: this.fireEvent('mouseenter', this); would be cool!
        });
    }
});

只需访问您的 jQuery 元素,然后从Element.prototype调用fireEvent

        // does not work:
        (function($$) {
            $$(this).fireEvent('mouseenter', $(this));
        })(document.id);

自:

$(this)[0].fireEvent('mouseenter' /* optional event obj, { target: $(this)[0] } */);
// or as @Sergio suggests -
this.fireEvent('mouseenter'); // this == element anyway