回答
This example如果將其直接點擊的元素具有ID唯一警報。
不知道更多關於你想要達到的目標,很難提供更好的答案。
$("*").click(function(e){
e.stopPropagation();
if($(this).attr("id") != null){
alert("have id ");
}
});
如果你調用'.stopPropagation()'(順便說一句,你拼錯了),那麼你不需要測試'e.target',因爲這個事件不會冒泡過目標 - 所以你可以按照代碼的原始版本使用'this'。 – nnnnnn 2012-02-16 05:25:00
@nnnnnn:謝謝,我更新了你的更正答案。 – 2012-02-16 06:01:47
問題出在*符號上。嘗試一些更具體的例如img或一類
$("*").click(function(e)....
函數「循環」的原因是因爲事件冒泡DOM。要停止冒泡,將此代碼添加到您的處理程序的頂部:
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
問題是你已經把它貼的點擊處理程序每元素在頁面上,然後單擊事件泡沫。也就是說,當你點擊一個子元素時,它的點擊處理程序將被調用,然後它的父級的點擊處理程序將被調用,等等。您可以使用.stopPropagation()
method如下冒泡停止事件:
$("*").click(function(e){
e.stopPropagation();
// your other code here
});
演示:http://jsfiddle.net/RUadJ/6/
(或者只是從你的點擊處理程序返回false
。)
或者你可以比較event.target
property到this
- 如果它們相同,則知道在泡泡之前正在處理「原始」單擊事件。 (如果他們不同,你知道事件已經冒泡了。)
P.S.將你的點擊處理程序附加到每個元素上是非常低效的。您可以只附加一個處理程序到document
,然後event.target
(上面提到的)將是最初點擊的元素,因此您仍然可以測試其ID。然後,你不必擔心,因爲冒泡的點擊已經儘可能它可以冒泡:
$(document).click(function(e){
if($(e.target).attr("id")!= null)
alert("have id ");
else
alert("doesn't have id ");
});
它的工作原理,謝謝:) – palAlaa 2012-02-16 04:57:09
這是JavaScript的事件冒泡。 單擊事件會彈出,如果你想停止它,只需添加以下代碼:
e.stopPropagation();
後的if-else句。
那麼在這種情況下,您可以針對特定的類
$("div.foo").click(function(e){
if(!$(this).attr("id")==''){
alert("have id ");
}
else
{
alert("doesn't have id ");
}
});
如果你的目標是一個特定的ID來附加處理程序,那麼當處理程序運行時,你已經知道該元素有一個ID不是嗎? (除非在分配處理程序之後id被動態刪除。) – nnnnnn 2012-02-16 04:59:13
該選擇*是低效的,因爲這一切再次重述,它會告訴你2 *(元素)循環
$("*").click(function(e){
var elementCount = $("#parent").find("*").length;
$("body").prepend("<h3>" + elementCount + " elements found</h3>");
});
- 1. ios coredata獲取特定父元素的元素
- 2. XML xpath,獲取父元素直到特定元素
- 3. JQuery的:獲取點擊的元素的父元素ID
- 4. 如何獲取元素的父元素?
- 5. 獲取元素的父元素
- 6. 父元素ID
- 7. 如何獲取父元素的ID?
- 8. Jquery - 獲取父元素的數據ID
- 9. 獲取父元素
- 10. 獲取父元素,其中有特定值的子元素不存在
- 11. 獲取丟棄的元素ID而不是放棄目標ID
- 12. 從父標記中獲取元素ID
- 13. 獲取特定元素
- 14. 獲取特定元素(N,)
- 15. 從ClassName獲取的所有元素中獲取特定元素?
- 16. 獲取元素的父
- 17. 獲取元素的表父
- 18. 選擇元素的父元素不具有特定的類
- 19. 使用類而不是ID(通過CLASS獲取元素而不是ID)
- 20. 從特定父元素讀取某些子元素
- 21. 如何從javascript中的父元素獲取特定的子元素
- 22. 相對於另一個元素而不是其父元素的位置元素
- 23. C#,LINQ獲取指定父元素的子元素
- 24. 檢查元素是否爲給定元素的父元素
- 25. 獲取元素的ID
- 26. 獲取元素的ID
- 27. 獲取Summernote元素的ID
- 28. 獲取選定文本的父元素
- 29. 從javascript中獲取元素id而不是名稱的值
- 30. 如何使用JavaScript從父元素的父元素的ID中獲取元素的屬性?
哪個元素的id你要嗎?你想要點擊元素的ID嗎? – 2012-02-16 04:51:10