Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-将单击事件自动应用于每个HTML元素_Javascript_Html_Javascript Events_Onclick - Fatal编程技术网

JavaScript-将单击事件自动应用于每个HTML元素

JavaScript-将单击事件自动应用于每个HTML元素,javascript,html,javascript-events,onclick,Javascript,Html,Javascript Events,Onclick,我想将单击事件(或任何其他事件)自动应用于页面上的每个HTML元素 我正在开发一种“点击游戏”,并希望使用一个通用JavaScript函数,它将处理页面上每个HTML元素的每次点击 这可能吗 document.addEventListener('click', function(e) { console.log(e.target); }, false); e.target将为您提供已单击的元素 e.target将为您提供已单击的元素。这不仅是可能的,而且是微不足道的: document

我想将单击事件(或任何其他事件)自动应用于页面上的每个HTML元素

我正在开发一种“点击游戏”,并希望使用一个通用JavaScript函数,它将处理页面上每个HTML元素的每次点击

这可能吗

document.addEventListener('click', function(e) {
    console.log(e.target);
}, false);
e.target
将为您提供已单击的元素


e.target
将为您提供已单击的元素。

这不仅是可能的,而且是微不足道的:

document.body.addEventListener("click", function(e) {
    // Use e.target for the clicked element
}, false);
单击“气泡”,从单击的元素到其父元素,再到其父元素,再到其父元素,等等,直到它们到达文档。(除非中间的事件处理程序通过
e.stopPropagation
)停止该操作,否则上述操作将钩住单击
主体(所有可见元素的容器)


请注意,以上内容适用于所有现代浏览器,包括标准模式下的IE9和更高版本。它在IE8及更早版本(或IE9及后来假装为IE8或更早版本)上不起作用,因为它们没有
addEventListener
。您必须使用IE特有的
attachEvent

这不仅是可能的,而且是微不足道的:

document.body.addEventListener("click", function(e) {
    // Use e.target for the clicked element
}, false);
单击“气泡”,从单击的元素到其父元素,再到其父元素,再到其父元素,等等,直到它们到达文档。(除非中间的事件处理程序通过
e.stopPropagation
)停止该操作,否则上述操作将钩住单击
主体(所有可见元素的容器)


请注意,以上内容适用于所有现代浏览器,包括标准模式下的IE9和更高版本。它在IE8及更早版本(或IE9及后来假装为IE8或更早版本)上不起作用,因为它们没有
addEventListener
。您必须改用IE特有的
attachEvent

为什么不直接绑定文档上的事件而不是正文?它是否更改了任何内容?
单击“气泡”,从单击的元素到其父元素,然后是其父元素,然后是其父元素,等等,直到它们到达文档。
除非使用
return false阻止事件气泡
事件停止播放()
@Tushar:
return false
只在jQuery下执行,但是是的,除非传播被介入的处理程序阻止。@T.J.Crowder我刚刚发现你已经回答了我关于@Tushar的问题:“点击气泡”是正确的,而不是“点击气泡”。我也用函数名来表示函数,没有
()
,意思是“document”是一个单词,而不是一个符号。为什么不直接绑定文档上的事件而不是正文?它是否更改了任何内容?
单击“气泡”,从单击的元素到其父元素,然后是其父元素,然后是其父元素,等等,直到它们到达文档。
除非使用
return false阻止事件气泡
事件停止播放()
@Tushar:
return false
只在jQuery下执行,但是是的,除非传播被介入的处理程序阻止。@T.J.Crowder我刚刚发现你已经回答了我关于@Tushar的问题:“点击气泡”是正确的,而不是“点击气泡”。我也用函数名来表示函数,没有
()
,而是将“document”表示为一个单词,而不是一个符号。“apply”是指“handle”吗?jQuery劫持了术语
bind
来表示完全不同的含义,让那些不懂术语的人感到困惑。正确的术语是“附加事件处理程序”。通过“应用”,您的意思是“句柄”吗?jQuery劫持了术语
bind
,使其含义完全不同,并使那些不懂术语的人感到困惑。正确的术语是“附加事件处理程序”。是否可以将“this”HTML元素传递给函数?例如,我的意思是:

-因此p元素被传递给函数。或者我应该使用tagName/localName属性?是否可以将“this”HTML元素传递给函数?例如,我的意思是:

-因此p元素被传递给函数。或者我应该使用标记名/本地名属性?