[英]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.