Cách tốt nhất (nhanh nhất/thích hợp) để làm đại biểu sự kiện trong vanilla js là gì?Đoàn đại biểu tổ chức sự kiện Vanilla JavaScript
Ví dụ nếu tôi có điều này trong jQuery:
$('#main').on('click', '.focused', function(){
settingsPanel();
});
Làm thế nào tôi có thể dịch đó để vani js? Có lẽ với .addEventListener()
Con đường tôi có thể nghĩ đến việc này là:
document.getElementById('main').addEventListener('click', dothis);
function dothis(){
// now in jQuery
$(this).children().each(function(){
if($(this).is('.focused') settingsPanel();
});
}
Nhưng điều đó dường như không hiệu quả đặc biệt là nếu #main
có nhiều trẻ em.
Đây có phải là cách thích hợp để làm điều đó không?
document.getElementById('main').addEventListener('click', doThis);
function doThis(event){
if($(event.target).is('.focused') || $(event.target).parents().is('.focused') settingsPanel();
}
Bắt đầu với 'event.target', xem nó có khớp với bộ chọn hay không và nếu có, hãy gọi hàm. Sau đó lặp lại thông qua tổ tiên của nó và làm tương tự cho đến khi bạn nhận được phần tử 'this'. Bạn có thể sử dụng 'node.matchesSelector()' để làm thử nghiệm, mặc dù trong một số trình duyệt nó được thực hiện với một cờ đặc trưng cho trình duyệt, vì vậy bạn cần phải bọc nó trong một hàm, hoặc đặt phương thức cờ trên 'Element. prototype.matchesSelector' –
Bạn nên đăng câu trả lời đó làm câu trả lời. –
@EvanTrimboli: Tôi không thích đăng câu trả lời. Tôi sẽ để người khác lấy đại diện. Cảm thấy tự do nếu bạn muốn. –