Tôi đang cố gắng tìm ra cách tốt nhất để loại bỏ trình xử lý sự kiện ẩn danh bằng cách sử dụng jQuery.Gỡ bỏ đúng trình xử lý sự kiện ẩn danh
tôi xác định một biến để giữ đối tượng của tôi jQuery:
var dom = $('#private-module');
Sau đó trong đối tượng của tôi:
run: function() {
var button, that = this;
button = dom.append('<button class="btn">Click Me</button>');
button.on('click', function(event) {
console.log('Clicked!');
that.destroy();
});
},
destroy: function() {
var button;
button = dom.find('.btn');
button.off('click');
}
Không có vấn đề gì tôi làm, tôi không thể giết handler nhấp chuột vào nút. Cảm giác như sự hiểu biết của tôi ở đây về phạm vi là thiếu sót. Cách ưa thích, trong tình huống này để loại bỏ xử lý là gì? Tôi đã cố gắng đặt tên cho các sự kiện và tất cả các loại nhưng không may mắn vì vậy tôi đoán nó là một cái gì đó đơn giản mà tôi đã bỏ qua. Có lẽ tôi thậm chí không nên sử dụng các hàm ẩn danh cho trình xử lý sự kiện.
Chỉ cần bolt một cái gì đó vào lập luận của tôi cho việc sử dụng .append:
http://jsperf.com/jquery-append-vs-appendto
Dưới đây là giải pháp cuối cùng:
dom.append('<button class="btn">Send Message</button>');
button = dom.find('.btn');
button.on('click', function (event) {
sendTestMessage();
that.destroy();
});
Tôi cũng đồng ý và hiểu về việc sử dụng phương pháp .Một . Cảm ơn vì điều đó.
Trên thực tế, bạn nên gõ 'one' chức năng cho việc này. – noob