có lẽ tôi là hoàn toàn mất tích một cái gì đó về ngay cả xử lý trong jQuery, nhưng đây là vấn đề của tôi.jquery tạm thời unbinding sự kiện
Giả sử có một số sự kiện ràng buộc, như
$(element).bind("mousemove", somefunc);
Bây giờ, tôi muốn giới thiệu một MouseMove mới ràng buộc mà không ghi đè lên trước đó, nhưng tạm thời loại trừ (unbind) nó. Nói cách khác, khi tôi liên kết chức năng của mình, tôi phải chắc chắn rằng không có chức năng nào khác sẽ thực hiện cho sự kiện đó, cho đến khi tôi khôi phục chúng.
Tôi đang tìm một cái gì đó như:
$(element).bind("mousemove", somefunc);
// Somefunc is used regularly
var savedBinding = $(element).getCurrentBinding("mousemove");
$(element).unbind("mousemove").bind("mousemove", myfunc);
// Use myfunc instead
$(element).unbind("mousemove", myfunc).bind("mousemove", savedBindings);
Tất nhiên, somefunc không phải là dưới sự kiểm soát của tôi, hay đây sẽ là vô ích :)
là sự hiểu biết của tôi rằng có thể để ràng buộc nhiều các hàm cho cùng một sự kiện và việc thực hiện các hàm đó không thể được xác định trước. Tôi biết dừng việc truyền sự kiện và tuyên truyền sự kiện ngay lập tức, nhưng tôi nghĩ rằng chúng vô dụng trong trường hợp của tôi, vì lệnh thực thi không thể xác định được (nhưng có lẽ tôi nhận được sai).
Tôi có thể làm như thế nào? Cảm ơn trước ~ Aki
EDIT: Tôi cần làm nổi bật điều này: Tôi cần rằng trình xử lý được cài đặt trước đó (somefunc) không được thực hiện. Tôi KHÔNG xác định rằng trình xử lý đó có thể có hoặc không có, nhưng được cài đặt bởi người dùng bên thứ ba.
EDIT2: Ok, điều này là không khả thi ngay bây giờ, tôi nghĩ rằng tôi đang cần eventListenerList, mà không được thực hiện trong hầu hết các trình duyệt được nêu ra. http://www.w3.org/TR/2002/WD-DOM-Level-3-Events-20020208/changes.html
Chà! Tôi đã không tink đó :) Điều này hoàn toàn có thể làm việc! Cảm ơn! – AkiRoss
Rất tiếc, xin lỗi, tôi đã sai: giải pháp đó không hoạt động, vì tôi cần tắt trình xử lý mousemove trước đó đã được liên kết. – AkiRoss
@AkiRoss - Tại sao bạn cần tắt trình xử lý trước đó? Bằng cách lật công tắc, bạn sẽ có được hiệu ứng tương tự. – JasCav