Javascript jQuery(document).on(";keydown";,…)起作用,但不是document.addEventListener(";keydown";,…)

Javascript jQuery(document).on(";keydown";,…)起作用,但不是document.addEventListener(";keydown";,…),javascript,jquery,events,dom,addeventlistener,Javascript,Jquery,Events,Dom,Addeventlistener,我想我应该看看我现在有多需要jQuery。所以我从替换开始 jQuery(document).on("keydown.", function(e){...}) 与 我认为这很容易,但令我惊讶的是,这一事件不再发生。为了研究这一点,我在控制台中输入了第二个版本。现在它成功了 当然,这有点不切实际。我希望我不必在控制台中输入它 在代码中,事件侦听器是在对DOM进行一些更改之后添加的,即添加了一些内容。我想问题可能与此有关,但我不知道该怎么办 有什么建议吗 编辑:谢谢大家的评论。在这种特殊情况下,最

我想我应该看看我现在有多需要jQuery。所以我从替换开始

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

我认为这很容易,但令我惊讶的是,这一事件不再发生。为了研究这一点,我在控制台中输入了第二个版本。现在它成功了

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

在代码中,事件侦听器是在对DOM进行一些更改之后添加的,即添加了一些内容。我想问题可能与此有关,但我不知道该怎么办

有什么建议吗

编辑:谢谢大家的评论。在这种特殊情况下,最好去掉jQuery(当然,除此之外,使用jQuery也没有问题)

我应该说一些DOM元素是在页面加载后很久才添加的,所以window.onload等在这里没有用处

我可能还应该说,我正在最新版本的Chrome中测试这个,对此,我对向后兼容性不感兴趣(在这种情况下,它太复杂了,所以我刚刚放弃了…;-)

更新:有人要求输入代码。下面是我刚刚测试的一个示例:

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

在Chrome开发工具中查看HTML元素的属性,我可以看到事件监听器(使用上面的代码)。它只是没有被解雇。看来现在正是编写另一个bug报告的时候了

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

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


对不起,浪费了你的时间。希望有人能使用答案。

也许你的代码有错误,你应该发布它。“我想我应该看看我现在有多需要jQuery…”你不需要jQuery。你可能想要它。我当然知道,我不必费心重新发明所有的实用功能;在无数浏览器上测试;发现、解决浏览器不一致的细节并解决这些问题;在发布后的一两天内,在数千个不同的环境中主动测试新的浏览器版本;创建一个庞大的附加组件阵列来做有用的事情。。。我是说…我有事情要做在较旧的浏览器上(请尝试在
window.onload=function(){}
wrapper中运行它。)@T.JCrowder同意,32kb的内存使用得很好,使用CDN最有可能被缓存。
    document.addEventListener("keydown.test", function(e){
        console.log("doc.addEL test keydown, e=", e)
    });