4

使用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。处理程序代码不运行!

请帮忙!

4

2 回答 2

3

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

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

var ev = new Event('keypress');
ev.keycode = 13;
ev.which = 13;

document.getElementById('fff').dispatchEvent(ev);

http://jsfiddle.net/alnitak/b9mCL/

于 2013-10-27T07:45:56.247 回答
0

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

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

小提琴演示

于 2013-10-27T07:28:52.003 回答