2012-08-26 26 views
6

Tôi chỉ nhận thấy rằng live() đã không được chấp nhận trong jQuery. Tôi có câu hỏi nhanh (chỉ để đảm bảo phương thức nào hiệu quả nhất, nhanh nhất và cập nhật). Tôi có myfunction() và tôi muốn bind() nó cho tất cả các thành phần hiện tại và tương lai với attr("title") == 'x'.Làm thế nào để thêm sự kiện jQuery cho tất cả các yếu tố hiện tại và tương lai?

Đây có phải là những gì tôi nên sử dụng:

jQuery("???").bind("mouseup", myfunction); 
jQuery("???").bind("keyup", myfunction); 

Hoặc này:

jQuery("???").delegate("???", "mouseup", myfunction); 
jQuery("???").delegate("???", "keyup", myfunction); 

Hoặc này:

jQuery("???").on("mouseup", "???", myfunction); 
jQuery("???").on("keyup", "???", myfunction); 

Tôi cũng đang gặp vấn đề xác định chọn đúng (s) - bởi vì một số người trong số họ cho phép để đính kèm sự kiện vào một điều (như cơ thể hoặc tài liệu) và họ cho phép chọn thứ hai.

Trả lời

9

Sử dụng .on() thay vào đó, với một attribute equals selector:

$(document).on('mouseup', '[title="x"]', myfunction); 
+0

Cảm ơn! Đó là những gì tôi đang tìm kiếm :) Tôi nghĩ rằng câu hỏi đã được trả lời. – Atadj

+0

@Paul: Ngoài ra, nếu bạn có một phụ huynh chung cho các phần tử khớp với bộ chọn '[title =" x "]', thay thế '$ (document)' bằng '$ (" # id_of_common_parent ")' vì nó sẽ là hiệu quả hơn. –

+0

Cảm ơn! Một điều cuối cùng - nếu tôi muốn sử dụng "contentEditable" thay vì "Title" và "contentEditable" có thể là: (1) 'contentEditable =" contentEditable "', (2) 'contentEditable =" true "' hoặc chỉ 'contentEditable '. Đó là 3 thuộc tính đánh dấu là 'true' - trong trường hợp' title = "x" 'chỉ có 1 khả năng. Đó là trường hợp thứ hai tôi cần nó. – Atadj

6

Cú pháp thay thế .live() là như thế này:

$('#parent').on('keyup mouseup', '.children', myfunction); 
+0

tốt để biết rằng tôi có thể kết hợp hai sự kiện cùng nhau sử dụng này. Cảm ơn! Tôi cũng tự hỏi điều gì sẽ là lựa chọn của tôi - và tại sao họ viết rằng 'live()' không hiệu quả? Nó có giống với 'on()' không? – Atadj

+0

Có một danh sách các vấn đề với '.live()' trong trang API cho phương thức đó: http://api.jquery.com/live/ – Blender

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