Javascript jQuery仅在附加了jQuery时才会触发keyup事件

Javascript jQuery仅在附加了jQuery时才会触发keyup事件,javascript,jquery,events,triggers,onkeyup,Javascript,Jquery,Events,Triggers,Onkeyup,使用jQuery触发keyup事件时真的搞砸了 这是一个干净的例子 当我输入任何一个输入时,它们都会触发事件,但当我尝试以编程方式($(element).trigger('event'))触发它时,只会触发第二个,但我希望两者都触发 我在哪里错过了什么 UPD I无法更改处理程序的连接方式 触发事件的本机方法是调用。不幸的是,此方法在中的任何位置都没有出现。所以我猜你要么自己创建事件对象,要么手动分派它们 这是一个较长的版本,带有一个工作模式 或者您可以看看jQuery,这使它稍微容易一些。这

使用jQuery触发
keyup
事件时真的搞砸了

这是一个干净的例子


当我输入任何一个
输入时,它们都会触发事件,但当我尝试以编程方式(
$(element).trigger('event')
)触发它时,只会触发第二个,但我希望两者都触发

我在哪里错过了什么


UPD I无法更改处理程序的连接方式

触发事件的本机方法是调用。不幸的是,此方法在中的任何位置都没有出现。所以我猜你要么自己创建事件对象,要么手动分派它们

这是一个较长的版本,带有一个工作模式

或者您可以看看jQuery,这使它稍微容易一些。这是一个简短的版本,另一个正在工作


“当我试图以编程方式启动它时”-你是什么意思?好问题。但是,顺便说一句,为什么要混合使用事件绑定呢?或者是不同的脚本文件使用不同的方式绑定事件?@Webars以编程方式=
$(element)。trigger('event')
所以以与第一个相同的方式附加第二个函数。@David Hoerster,我实际上已经绑定了事件,并希望从chrome扩展触发它。只是增加了第二个来强调这个问题。也许我不应该。谢谢,现在清楚了。这不是必需的,但可能是我可以以某种方式扩展jQuery触发器功能,使其能够在内部执行那些伪造的
键盘事件
?我没有查看触发器的源代码,但用您自己的代码替换它相当容易。但是,您必须处理以下问题:将DOM事件规范化为jQuery事件,以确保所有其他事件处理正常工作;在该事件对象上设置正确的属性;以及处理跨浏览器问题。解决方案不像创建包装器那样简单,包装器直接分派DOM事件,然后调用jQuery的实现,因为在这种情况下,同一事件将被触发两次—一次用于元素上的所有事件,一次用于jQuery绑定的事件
$('button').click(function() {
        var myEvent = document.createEvent('KeyboardEvent');
        myEvent.initKeyboardEvent('keyup', true, true, null, false, 
                                false, false, false, 76, 0);
        $('input').each(function() {
            this.dispatchEvent(myEvent);
        });
    });
$('button').click(function() {
    $('input').simulate('keyup');
});