Nếu bạn đang cố gắng sử dụng .on()
để bạn có thể lắng nghe các sự kiện trên đối tượng DOM có thể được tạo sau khi bạn thực hiện cuộc gọi .on()
ban đầu, sau đó cách hiệu quả nhất để làm như vậy là tìm một đối tượng cha mẹ hiện có sẽ không đến và đi và bạn có thể liên kết trình xử lý sự kiện cho đến bây giờ.
.live()
đặt tất cả người nghe trên đối tượng tài liệu (cha mẹ chính) và có thể nhận được khá kém hiệu quả nếu bạn có nhiều người nghe.
.on()
cho phép bạn chỉ định đối tượng cha mẹ nào sẽ hiệu quả nhất. Vì vậy, nếu bạn muốn đặt tất cả các trình xử lý sự kiện này vào một câu lệnh và '#header .fixed-feedback-bn, # sb-sec .feedback-bn' này không có cha mẹ chung, thì bạn phải chỉ định tài liệu như cha mẹ như Greg đã viết.
Tuy nhiên, cách hiệu quả hơn để thực hiện việc này là chia nhỏ phần này theo nhu cầu. Đối với các phần tử không có nhu cầu động, chỉ cần liên kết trực tiếp với phần tử đó.Ví dụ, nếu # header và # sb-giây không đến/đi và không cần hành vi năng động, bạn chỉ có thể tìm trực tiếp đến nó như thế này:
$('#header, #sb-sec').on('click', function() {
// code here
});
Và, đối với các yếu tố mà bạn cần một số năng động hành vi, chọn một phụ huynh phổ biến phù hợp và móc vào điều đó bằng cách sử dụng cha mẹ chung làm điểm bắt đầu cho các sự kiện và công cụ chọn làm bộ lọc cho các thành phần phụ bạn muốn sự kiện kích hoạt:
$('#feedback').on('click', '.feedback-bn, .fixed-feedback-bn', function() {
// code here
});
BTW, tôi luôn sử dụng '$ (tài liệu)' thay vì '$ ('tài liệu')' Có khác gì cho jQuery không? –