Tôi kẹt ở đây với một vấn đề nhỏ mà tôi đã đặt khá nhiều thời gian trong đó là khá xấu so với chức năng của nó.Bật/Tắt sự kiện của các phần tử DOM với JS/jQuery
Tôi có thẻ trong DOM của tôi, và tôi đã được ràng buộc một số sự kiện đối với họ với jQuery ..
var a = $('<a>').click(data, function() { ... })
Đôi khi tôi muốn vô hiệu hóa một số những yếu tố này, có nghĩa là tôi thêm một CSS-Class 'bị vô hiệu hoá' đối với nó và tôi muốn xóa tất cả các sự kiện, do đó không có sự kiện nào được kích hoạt nữa. Tôi đã tạo ra một lớp học ở đây được gọi là "nút" để giải quyết mà
var button = new Button(a)
button.disable()
tôi có thể loại bỏ tất cả các sự kiện từ một đối tượng jQuery với $ .unbind. Nhưng tôi cũng muốn có các tính năng đối diện
button.enable()
mà liên kết với tất cả các sự kiện với tất cả các bộ xử lý trở lại các yếu tố HOẶC có lẽ đó là một tính năng trong jQuery mà thực sự nows làm thế nào để làm điều đó ?!
Nút Lớp tôi trông giống tương tự như sau:
Button = function(obj) {
this.element = obj
this.events = null
this.enable = function() {
this.element.removeClass('disabled')
obj.data('events', this.events)
return this
}
this.disable = function() {
this.element.addClass('disabled')
this.events = obj.data('events')
return this
}
}
Bất kỳ ý tưởng? Đặc biệt là chức năng rebind này phải có sẵn sau khi vô hiệu hóa -> enable
var a = $('<a>').click(data, function() { ... })
tôi tìm thấy những nguồn mà không làm việc cho tôi: http://jquery-howto.blogspot.com/2008/12/how-to-disableenable-element-with.html
http://forum.jquery.com/topic/jquery-temporarily-disabling-events -> Tôi không thiết lập các sự kiện trong lớp nút
Đánh giá cao sự trợ giúp của bạn.
Tôi không hoàn toàn chắc chắn về cách để vô hiệu hóa sự kiện theo yêu cầu này var a = $ ('') .click (dữ liệu, function() {...}) sử dụng stopPropagation hoặc preventDefault ?? – pabera