2016-08-13 61 views

回答

1

其原因是,click事件不會觸發#div_test元素,但document元素。
您可以檢查e.delegateTarget兩個版本,看看哪些因素觸發click事件:

$(document).on("click", "#div_test1", function(e) { 
 
    console.log(e.delegateTarget.nodeName); 
 
}); 
 

 
$("#div_test2").click(function(e) { 
 
    console.log(e.delegateTarget.nodeName); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="div_test1">click HERE!</div> 
 
<br /><br /> 
 
<div id="div_test2">click HERE!</div>

當您使用$("#div_test").click你附加click事件到特定的元素,這可以讓你獲取所有附加到該元素的事件。

但是當您使用$(document).on("click", "#div_test"附加click事件,你document內部存在的#div_text元素。
實際上,您將click事件附加到document元素,當瀏覽器捕獲該事件時,jquery將檢查您點擊的實際元素是否爲#div_test元素。
這允許您將「附加事件」添加到尚未創建的元素中。

概括起來:

$(document).on("click", "#div_test", function(... 

IS NOT

$(document).find('#div_test').on("click", function(... 
+0

不知道!謝謝。即使事件是通過on開始的,是否有可能獲得'div'的event_list? –

+0

@Matías,檢查我的更新回答,我想它可能會給你一個線索:)(讓我知道如果它不夠清楚) – Dekel

+0

你一直很清楚。我想我必須像jQuery一樣,並檢查'​​div'是否被右鍵點擊了? –

相關問題