JavaScript:捕获事件而不考虑元素
是否存在任何现有机制,通过该机制,我可以为页面上具有此事件的所有DOM元素将事件侦听器添加到“焦点”中?如果没有,我该怎么做JavaScript:捕获事件而不考虑元素,javascript,events,dom,Javascript,Events,Dom,是否存在任何现有机制,通过该机制,我可以为页面上具有此事件的所有DOM元素将事件侦听器添加到“焦点”中?如果没有,我该怎么做 每当任何DOM元素触发事件时,我都希望console.log(某物)。我该怎么做 编辑:没有任何框架,请:)您可以将事件绑定到正文或html元素。或者包含所有html的任何其他元素 或者,如果您想使用jQuery,可以执行以下操作 $("*").bind("focus", function(e){ console.log("something"); }) 事件在
编辑:没有任何框架,请:)您可以将事件绑定到正文或html元素。或者包含所有html的任何其他元素 或者,如果您想使用jQuery,可以执行以下操作
$("*").bind("focus", function(e){
console.log("something");
})
事件在DOM中“冒泡”,因此您应该能够将侦听器绑定到document、body、html或任何其他父元素(例如div),并侦听由其包含的元素触发的每个事件
例如,使用JQuery,您可以这样做:
$(document).bind('focus', function(e) { console.log(e); });
这将记录每个焦点事件,无论是哪个元素最初触发事件。您可以尝试在jQuery中使用
:input
伪选择器
$(':input').focus(function(e){
console.log(e);
});
这只会附加到输入元素上,这可能是您一直在寻找的内容。类似的内容应该可以使用(使用jQuery) 下面是一个活生生的例子:
。。。除非气泡被取消。此断言的问题是某些事件(
onfocus
是其中之一)不会气泡(在IE中)。你不能一概而论。每个事件都是特殊的。对,你可以做$(文档),但OP没有指定他的需求。我知道$(“*”)的速度要慢得多,但听起来好像他需要在特定元素的基础上进行日志记录。
$("input").focus(function(){
console.log($(this).attr("id"));
});