Mục đích của selector
trong phương thức jQuery on()
là gì?Bộ chọn jQuery on()
Trong những tình huống là
$("#fish").on("click", ".button", function() {
// something
});
tốt hơn, chẳng hạn,
$("#fish").find(".button").on("click", function() {
// something
});
?
Tôi đã nhìn vào jQuery documention và thấy:
Nếu chọn bỏ qua hoặc là null, xử lý sự kiện được gọi là trực tiếp hoặc trực tiếp-bound. Trình xử lý được gọi mỗi khi một sự kiện xảy ra trên các phần tử đã chọn, cho dù nó xảy ra trực tiếp trên phần tử hoặc bong bóng từ phần tử con cháu (bên trong).
Khi bộ chọn được cung cấp, trình xử lý sự kiện được gọi là ủy quyền. Trình xử lý không được gọi khi sự kiện xảy ra trực tiếp trên phần tử bị ràng buộc, nhưng chỉ cho các hậu duệ (các phần tử bên trong) khớp với bộ chọn. jQuery bong bóng sự kiện từ mục tiêu sự kiện lên đến phần tử mà trình xử lý được đính kèm (tức là, trong cùng đến phần tử ngoài cùng) và chạy trình xử lý cho bất kỳ phần tử nào dọc theo đường dẫn đó khớp với bộ chọn.
Am I correct khi nói rằng sự khác biệt là trong ví dụ đầu tiên của tôi, sự kiện này được ràng buộc với #fish
, nhưng chỉ lắng nghe cho các sự kiện bọt lên từ .buttons
, trong khi ở ví dụ thứ hai sự kiện này chắc chắn sẽ mỗi của .buttons
? Nếu vậy thì hàm ý của điều này là gì? : S
Vì vậy, nếu sự kiện bị ràng buộc với #fish, khi bạn nhấp vào nút .button, có cách nào để biết nút .button đã được nhấp vào không? điều này sẽ chỉ đến con #fish chứ không phải là .button, đúng không?
Ví dụ đầu tiên sẽ hoạt động cho các phần tử '.button' bên trong' # fish' tồn tại khi sự kiện bị ràng buộc hoặc trong tương lai. Ví dụ thứ hai sẽ chỉ chạy hàm trên các phần tử '.button' bên trong' # fish' khi ràng buộc được tạo. – BenM