使用jQuery,如何触发由另一个版本的jQuery处理的事件

With jQuery, how to trigger and event that is handled by another version of jQuery?

本文关键字:jQuery 版本 事件 另一个 处理 何触发 使用      更新时间:2023-09-26

有了jQuery,我想触发一个keypress事件,其中该事件由另一个版本的jQuery处理。

jQuery2 = jQuery.noConflict(true);
$(function(){
    $("#fff").keypress(function(event) { 
        if (event.which == 13) { alert('jQuery'); } 
    });
    jQuery2('#fff').trigger(jQuery2.Event("keypress",{keyCode:13, which:13}));
});

请注意,处理程序是用$定义的,而事件是用 jQuery2 触发的。

这是一个演示:jsfiddle。处理程序代码无法运行!

请帮忙!

jQuery的.trigger函数只遍历在jQuery中注册的事件处理程序。

相反,请使用本机 DOM 事件创建和触发函数 - 无论哪个 jQuery 实例注册了它,都应该捕获您的事件:

var ev = new Event('keypress');
ev.keycode = 13;
ev.which = 13;
document.getElementById('fff').dispatchEvent(ev);

请参阅 http://jsfiddle.net/alnitak/b9mCL/

我的猜测是,由于$jQuery2是两个不同的包装器,它们选择的对象也不同。这就是事件不会被触发的原因。您可以在变量中缓存所选对象,然后引发事件:

    var $input = $("#fff");
    $input.keypress(function (event) {
        if (event.which == 13) {
            alert('jQuery');
        }
    });
    $input.trigger(jQuery2.Event("keypress", {
        keyCode: 13,
        which: 13
    }));

小提琴演示