Bất kỳ ai có thể cho tôi biết sự khác biệt chính xác giữa các thuộc tính currentTarget
và target
trong các sự kiện Javascript với ví dụ và thuộc tính nào được sử dụng trong trường hợp nào?Sự khác biệt chính xác giữa thuộc tính currentTarget và thuộc tính đích trong javascript
Trả lời
Về cơ bản, events bubble theo mặc định nên sự khác biệt giữa hai là:
target
là yếu tố phát động sự kiện (ví dụ, người dùng nhấp vào)currentTarget
là yếu tố mà người nghe sự kiện được gắn vào.
Xem giải thích đơn giản về số blog post này.
target = yếu tố kích hoạt sự kiện; currentTarget = phần tử lắng nghe sự kiện. – markmarijnissen
@markmarijnissen Bạn chắc chắn nên đặt bình luận của bạn như một câu trả lời vì nó hữu ích hơn câu trả lời ở trên và nhiều hơn nữa cũng bình chọn! – Andrea
Bạn có thể vui lòng cập nhật câu trả lời của mình cho mỗi [nhận xét này] (http://stackoverflow.com/questions/10086427/what-is-the-exact-difference-between-currenttarget-property-and-target-property#comment39457506_10086501) –
target
= yếu tố kích hoạt sự kiện.
currentTarget
= yếu tố lắng nghe sự kiện.
ví dụ! – Martian2049
Nếu điều này không được gắn bó, hãy thử này:
hiện trong currentTarget
đề cập đến hiện tại. Đó là mục tiêu gần đây nhất bắt được sự kiện sôi nổi từ nơi khác.
dụ Minimal
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>
Khi 2
được nhấp và niêm yết để trên 1
, kết quả là:
target: 2
currentTarget: 1
vì trong trường hợp đó:
2
là yếu tố có nguồn gốc sự kiện1
là yếu tố mà nghe sự kiện
event.target là nút mà từ đó sự kiện này có nguồn gốc, tức là. bất cứ nơi nào bạn đặt trình lắng nghe sự kiện của bạn (trên đoạn hoặc span), event.target tham chiếu đến nút (nơi người dùng nhấp vào).
event.currentTarget, ngược lại, đề cập đến nút mà trình nghe sự kiện hiện tại được đính kèm. I E. nếu chúng ta gắn trình nghe sự kiện của chúng ta vào nút đoạn, thì event.currentTarget đề cập đến đoạn trong khi event.target vẫn đề cập đến span. Lưu ý: nếu chúng ta cũng có một trình lắng nghe sự kiện trên cơ thể, thì đối với event-listener này, event.currentTarget đề cập đến body (tức là sự kiện được cung cấp làm đầu vào cho event-listerners được cập nhật mỗi khi event xảy ra một nút).
<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>
Nếu nhấp chuột vào thẻ P trong đoạn code trên sau đó bạn sẽ nhận được ba cảnh báo, và nếu bạn nhấn vào thẻ div, bạn sẽ nhận được hai cảnh báo và cảnh báo duy nhất trên cách nhấn vào hình thức nhãn. Và bây giờ nhìn thấy đoạn mã sau,
<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>
[ đối tượng HTMLParagraphElement] [đối tượng HTMLDivElement]
Đây event.target là [object HTMLParagraphElement] và event.curentTarget là [object HTMLDivElement]: Vì vậy
event.target là nút mà từ đó sự kiện này có nguồn gốc, và event.currentTarget, trên toàn ngược lại, đề cập đến nút trên mà hiện tại sự kiện người nghe là attached.To biết thêm see bubbling
Ở đây chúng tôi đã nhấp vào thẻ P nhưng chúng tôi không có người nghe trên P nhưng trên div phần tử gốc của nó.
- 1. Sự khác biệt giữa instanceof và thuộc tính hàm tạo
- 2. Sự khác biệt giữa Thuộc tính phụ thuộc SetValue() & SetCurrentValue()
- 3. Sự khác biệt giữa các thuộc tính thuộc tính trong mục tiêu-c
- 4. Sự khác biệt giữa _self, _top và _parent trong thuộc tính đích của thẻ neo
- 5. Sự khác biệt giữa Thuộc tính Canvas và Lề số
- 6. Sự khác biệt giữa "javascript :;" và "javascript:" trong thuộc tính href?
- 7. sự khác biệt giữa thuộc tính ghi đè và thuộc tính gán nonatomic là gì?
- 8. Sự khác biệt giữa thuộc tính phụ thuộc và thuộc tính đính kèm trong WPF là gì?
- 9. Sự khác biệt giữa việc xác định và gán thuộc tính
- 10. Sự khác biệt giữa các thuộc tính và các biến trong tệp tiêu đề iOS?
- 11. sự khác biệt giữa các thuộc tính khuôn mẫu và giá trị được gắn thẻ
- 12. Sự khác nhau giữa JavaScript Array và Object ngoại trừ thuộc tính .length là gì?
- 13. Sự khác biệt giữa biến thành viên và thuộc tính thành viên?
- 14. Sự khác biệt giữa các thuộc tính Converter và MemberConverter của JsonPro's JsonProperty
- 15. Sự khác biệt giữa các thuộc tính EnableRowVirtualization và VirtualizingStackPanel.IsVirtualizing của WPF DataGrid
- 16. Sự khác biệt giữa việc gọi phương thức và truy cập thuộc tính
- 17. Sự khác biệt giữa contentDocument và contentWindow thuộc tính truy cập khung nội tuyến/khung hình javascript
- 18. Sự khác biệt giữa các thuộc tính đối tượng JavaScript được trích dẫn và không được trích dẫn
- 19. Sự khác nhau giữa việc sử dụng onclick của jQuery và thuộc tính onclick là gì?
- 20. Độ chính xác thuộc tính AS3 x và y
- 21. sự khác biệt giữa 'và "trong JavaScript?
- 22. Sự khác biệt chính xác giữa rvalue và lvalue
- 23. Tạo thuộc tính javascript như thuộc tính C#
- 24. Sự khác nhau giữa các thuộc tính trong Request, Session và ServletContext
- 25. Sự kiện thay đổi thuộc tính javascript
- 26. Sự khác nhau giữa thuộc tính và hàm được tham số trong vb.net là gì?
- 27. Mục đích của thuộc tính-đích là gì?
- 28. Sự khác biệt giữa đường dẫn thuộc tính '<pathelement>' và 'vị trí' trong Ant là gì?
- 29. Buộc sử dụng thuộc tính trên thuộc tính, nếu chúng đã có thuộc tính khác
- 30. RestKit thuộc tính khóa chính
Điều quan trọng là một số trình duyệt có các cách tiếp cận khác nhau, ví dụ nếu bạn nghe một sự kiện sao chép div, trong FF bạn sẽ nhận được một textNode thay vì một phần tử, nhưng người nghe sẽ ở cấp div. – Nikos