[英]how to get clicked element while using “select all” operator i.e “ * ” using jquery?
$('body').on("click", "*", function(e) { console.log("clicked tag:" + this.tagName); console.log("index:(" + this.tagName + ")[" + $(this).index(this.tagName) + "]"); });
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> </head> <body> <div> <p>hello !</p> <div> <p>stack overflow</p> </div> </div> </body> </html>
此代码标识click事件并获取人员单击的html标记 ,并显示元素的索引 。 问题在于,它首先返回clicked元素的html标签(这是必需的) ,然后再返回其父元素(这不是必需的) 。 我只想要clicked元素,而不是父元素。 我应该怎么做?
因为您使用的是*
选择器,所以当您单击某个元素时,它会传播并触发每个祖先的click
处理程序,直到到达body
为止。 您可以只使用evt.stopPropagation()
,但是没有必要,因为您想要的东西已经可以通过evt.target
(即,触发单击处理程序绑定到body
的元素):
$( 'body' ).on( 'click', function( evt ) {
console.log( evt.target );
} );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.