任何人都可以告訴我具有示例的Javascript事件中的currentTarget
和target
屬性之間的確切區別,以及在哪種情況下使用哪個屬性?在javascript中的currentTarget屬性和目標屬性之間的確切區別是什麼
回答
基本上,events bubble默認所以兩者之間的區別在於:
target
是觸發事件的元素(例如,用戶點擊了)currentTarget
是元素,事件監聽器被附加到。
請參閱blog post的簡單說明。
target =觸發事件的元素; currentTarget =偵聽事件的元素。 – markmarijnissen 2014-08-14 17:27:08
@markmarijnissen你絕對應該把你的評論作爲答案,因爲它比上面的答案更有用,更多的投票也! – Andrea 2015-12-09 17:11:16
可以請你更新你的答案每[這個評論](http://stackoverflow.com/questions/10086427/what-is-the-exact-difference-between-currenttarget-property-and-target-property#comment39457506_10086501) – 2015-12-24 12:28:06
如果不堅持,試試這個:
當前在currentTarget
是指本。這是最近的目標,它引發了從其他地方冒出的事件。
最小示例
window.onload = function() {
var resultElem = document.getElementById('result')
document.getElementById('1').addEventListener(
'click',
function(event) {
resultElem.innerHTML += ('<div>target: ' + event.target.id + '</div>')
resultElem.innerHTML += ('<div>currentTarget: ' + event.currentTarget.id + '</div>')
},
false
)
document.getElementById('2').dispatchEvent(
new Event('click', { bubbles:true }))
}
<div id="1">1
<div id="2">2
</div>
</div>
<div id="result">
<div>result:</div>
</div>
當2
被點擊並列出上1
,其結果是:
target: 2
currentTarget: 1
因爲在這種情況下:
2
是發起事件1
的元素是聽取事件
event.target是從哪個事件起源的節點上,即該元素。無論您放置事件偵聽器(在段落還是跨度上),event.target都指節點(用戶單擊的位置)。
event.currentTarget,相反,指的是當前事件偵聽器所連接的節點。 IE瀏覽器。如果我們在段落節點上附加了事件偵聽器,則event.currentTarget引用段落,而event.target仍然引用span。 注意:如果我們在body上還有一個事件監聽器,那麼對於這個事件監聽器,event.currentTarget引用body(即,事件提供者作爲輸入提供的事件每次事件冒泡一個節點時被更新)。
<style>
body * {
margin: 10px;
border: 1px solid blue;
}
</style>
<form onclick="alert('form')">FORM
<div onclick="alert('div')">DIV
<p onclick="alert('p')">P</p>
</div>
</form>
如果點擊上面的代碼p標籤,那麼你將得到三個警報,如果你點擊div標籤,你會得到兩個警告和一個警報上單擊窗體標籤。 現在你看看下面的代碼,
<style>
body * {
margin: 10px;
border: 1px solid blue;
}
</style>
<script>
function fun(event){
alert(event.target+" "+event.currentTarget);
}
</script>
<form>FORM
<div onclick="fun(event)">DIV
<p>P</p>
</div>
</form>
[對象HTMLParagraphElement] [對象HTMLDivElement]
這裏event.target是[對象HTMLParagraphElement]和event.curentTarget是[對象HTMLDivElement]: 所以
event.target是從哪個事件起源, 和 event.currentTarget節點,在相對的,指的是在其上電流事件偵聽器是attached.To知道更多see bubbling
節點
這裏我們點擊了P標籤,但是我們沒有在P上的監聽器,而是在它的父元素div上。
- 1. MSBuild的目標屬性和目標標記之間的區別
- 2. Backbone.Model.Initialize中的屬性和選項之間的區別是什麼
- 3. ASP.NET中屬性「ID」和「BehaviorID」之間的區別是什麼?
- 4. Neo4J中節點和屬性之間的區別是什麼。
- 5. in ionic 2指令,屬性和屬性之間的真正區別是什麼?
- 6. NameValueCollection上的屬性Keys和AllKeys之間的區別是什麼?
- 7. 字段和自動屬性之間的區別是什麼?
- 8. 角色,隸屬關係和屬性之間有什麼區別?
- 9. @JsonIgnore屬性和沒有註解的屬性之間有什麼區別?
- 10. SPQuery:Query和ViewXml屬性之間的區別?
- 11. WPF中依賴項屬性和附加屬性之間有什麼區別?
- 12. Ant javac目標和源屬性之間的區別?
- 13. 輸入屬性和可預測屬性之間的區別
- 14. 屬性指令和元素屬性語法之間的區別?
- 15. restkit中的「屬性」和「屬性」有什麼區別
- 16. objective-c中的屬性屬性之間的區別
- 17. lxml中的屬性和樣式標籤之間的區別
- 18. 在對象的屬性和數組之間迭代有什麼區別Javascript
- 19. Javascript中的對象屬性和對象屬性有什麼區別?
- 20. 「javascript :;」有什麼區別和「javascript:」在href屬性中?
- 21. 螞蟻的屬性值和屬性位置有什麼區別
- 22. JavaScript/DOM - 「CSS選擇器」和屬性之間是否有區別?
- 23. ember.js中'[]'屬性和'@each'屬性有什麼區別?
- 24. chefspec:謂詞匹配器和屬性之間有什麼區別?
- 25. 屬性clearTaskOnLaunch和finishOnTaskLaunch之間有什麼區別?
- 26. ARC:成員變量和屬性之間有什麼區別?
- 27. MongoDB:文檔,記錄和屬性之間有什麼區別?
- 28. 活躍度和進度屬性之間有什麼區別?
- 29. src和data-src屬性之間有什麼區別?
- 30. 靜態屬性和單例之間有什麼區別?
它的重要esp導致一些瀏覽器有不同的方法,例如,如果你聽一個div複製事件,在FF中,你將得到一個textNode而不是一個元素,但監聽器將在div級別。 – Nikos 2016-04-04 15:21:39