2011-07-23 37 views
8

Tôi đã suy nghĩ về hiệu suất liên quan đếnjQuery .live() hoạt động như thế nào?

.click() vs .live("click")

và khiến tôi tự hỏi về cách .live làm việc.

Có giám sát các thay đổi DOM và khi nó phát hiện thay đổi trong DOM, nó chỉ gắn sự kiện vào lúc đó, nó có sử dụng một số loại bộ hẹn giờ (tôi không nghĩ vậy, nhưng nếu điều này là rất quan trọng, giờ làm cho tôi một người buồn)

+0

này có thể giúp: http://paulirish.com/2010/on-jquery-live/ – Gaurav

+0

check this out. http://james.padolsey.com/jquery/#v=1.6.2&fn=jQuery.fn.live không timers – naveen

Trả lời

0

nếu bạn đang thêm các yếu tố để DOM động và muốn xử lý nhấp chuột để được atached với họ bạn sẽ phải sử dụng live hoặc delegate nhưng nếu bạn không phải là chỉ cần sử dụng click

+3

Tôi nghĩ rằng OP hiểu * khi * để sử dụng, anh ta chỉ tò mò về việc thực hiện 'live' –

2

.live không đính kèm sự kiện vào mọi yếu tố trong dom ngay cả khi dom thay đổi. Nó lắng nghe sự kiện đến phần tử gốc như phần thân hoặc bất kỳ vùng chứa nào được gắn trực tiếp. Khi sự kiện trong phần tử mức bên trong được kích hoạt, nó sẽ kiểm tra mục tiêu và khớp với bộ chọn được chỉ định trong phần tử trực tiếp và nếu nó khớp với nó sẽ làm tăng sự kiện đó.

2

Từ hướng dẫn jQuery trên .live():

Phương pháp .live() có thể ảnh hưởng đến các yếu tố chưa được thêm vào DOM thông qua việc sử dụng các đoàn đại biểu sự kiện: một handler ràng buộc để một phần tử tổ tiên chịu trách nhiệm cho các sự kiện được kích hoạt trên các hậu duệ của nó. Trình xử lý được chuyển tới .live() không bao giờ bị ràng buộc với phần tử ; thay vào đó, .live() liên kết một trình xử lý đặc biệt với thư mục gốc của cây DOM .

Như bạn thấy, không có hẹn giờ liên quan.

Các vấn đề liên quan