JavaScript:捕获事件而不考虑元素

JavaScript:捕获事件而不考虑元素,javascript,events,dom,Javascript,Events,Dom,是否存在任何现有机制,通过该机制,我可以为页面上具有此事件的所有DOM元素将事件侦听器添加到“焦点”中?如果没有,我该怎么做 每当任何DOM元素触发事件时,我都希望console.log(某物)。我该怎么做 编辑:没有任何框架,请:)您可以将事件绑定到正文或html元素。或者包含所有html的任何其他元素 或者,如果您想使用jQuery,可以执行以下操作 $("*").bind("focus", function(e){ console.log("something"); }) 事件在

是否存在任何现有机制,通过该机制,我可以为页面上具有此事件的所有DOM元素将事件侦听器添加到“焦点”中?如果没有,我该怎么做

  • 每当任何DOM元素触发事件时,我都希望console.log(某物)。我该怎么做


  • 编辑:没有任何框架,请:)您可以将事件绑定到正文或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"));
    });