Kể từ jQuery 1.7, bạn nên sử dụng jQuery.fn.on
:
$(staticAncestors).on(eventName, dynamicChild, function() {});
Trước đó , cách tiếp cận được đề xuất là sử dụng live()
:
$(selector).live( eventName, function(){} );
Tuy nhiên, live()
đã bị phản đối trong 1.7 ủng hộ on()
và loại bỏ hoàn toàn trong 1.9. Các live()
chữ ký:
$(selector).live( eventName, function(){} );
... có thể được thay thế bằng on()
chữ ký sau :
$(document).on( eventName, selector, function(){} );
Ví dụ: nếu trang của bạn tự động tạo các phần tử với tên lớp, dosomething
bạn sẽ liên kết sự kiện với cha mẹ đã tồn tại (đây là vấn đề không phải ở đây, bạn cần một cái gì đó tồn tại để liên kết, đừng liên kết với nội dung động), đây có thể là (và tùy chọn dễ nhất) là document
. Mặc dù trong tâm trí document
có thể không phải là lựa chọn hiệu quả nhất .
$(document).on('mouseover mouseout', '.dosomething', function(){
// what you want to happen when mouseover and mouseout
// occurs on elements that match '.dosomething'
});
Bất kỳ cha mẹ tồn tại tại thời điểm sự kiện bị ràng buộc là tốt. Ví dụ
$('.buttons').on('click', 'button', function(){
// do something here
});
sẽ áp dụng cho
<div class="buttons">
<!-- <button>s that are generated dynamically and added here -->
</div>