jQuery(document).on(“keydown”,...)有效,但不是document.addEventListener(“keydown”,...)

时间:2014-01-18 22:30:19

标签: javascript jquery events dom addeventlistener

我想我应该看看我现在真的需要多少jQuery。所以我开始更换

jQuery(document).on("keydown.", function(e){...})

document.addEventListener("keydown", function(e){...})

我相信一件事很容易,但令我惊讶的是,事件不再被解雇。为了调查这一点,我在控制台中输入了第二个版本。现在它奏效了。 ; - )

当然,这有点不切实际。我宁愿我不必在控制台中输入它......

在代码中,在对DOM进行一些更改后立即添加事件侦听器,这是一些补充。我想麻烦可能与此有关,但我不知道该怎么做。

有什么建议吗?

编辑:感谢大家的评论。在这种特殊情况下,摆脱jQuery会很好(但是当然使用jQuery也没问题)。

我应该说在加载页面后很长时间会添加一些DOM元素,所以window.onload等在这里没用。

我或许也应该说我在最新版本的Chrome中对此进行了测试,为此我对后向兼容性不感兴趣(在这种情况下它太复杂了所以我刚刚放弃了......; - ))。

更新:有人要求代码。这是我刚测试的一个例子:

    document.addEventListener("keydown.test", function(e){
        console.log("doc.addEL test keydown, e=", e)
    });

在HTML元素的属性中查看Chrome开发工具我可以在那里看到事件监听器(带有上面的代码)。它只是没有解雇。好像现在是时候编写另一个bug报告了。 ; - )

1 个答案:

答案 0 :(得分:0)

我的坏。我误读了现在可以使用标准语法删除事件处理程序的消息。它们可以,但语法是你将事件+处理函数赋予removeEventListener。

我上面用于事件的语法“keydown.test”不是有效的语法(如果你没有使用jQuery)。

抱歉浪费你的时间。希望有人可以使用答案。