Nếu tôi có mã bên dưới, các hộp văn bản của lớp học nối tiếp sẽ bị ràng buộc với các sự kiện nhiều lần nếu nút nối tiếp mới được nhấn nhiều lần.Các sự kiện liên kết với các phần tử trong jQuery có nhiều lần có hiệu ứng gõ không?
Điều này sẽ cản trở hiệu suất hay jQuery chỉ đăng ký các sự kiện một lần ngay cả khi phương thức liên kết được gọi nhiều lần?
$(document).ready(function() {
MonitorSerialTextBoxes();
$('#newSerial').click(function() {
$.tmpl("productTemplate", mymodel).insertAfter($(".entry").last());
MonitorSerialTextBoxes();
});
function MonitorSerialTextBoxes() {
$('.serial').each(function() {
// Save current value of element
$(this).data('oldVal', $(this).val());
// Look for changes in the value
$(this).bind("propertychange keyup input paste", function (event) {
// If value has changed...
if ($(this).data('oldVal') != $(this).val() && $(this).val().length == 10) {
// Updated stored value
$(this).data('oldVal', $(this).val());
// Do action
}
});
}
});
UPDATE: Tôi tin rằng nó sẽ như vậy sẽ thêm mã dưới đây để các thiings chức năng sửa chữa MonitorSerialTextBoxes?
$('.serial').unbind("propertychange keyup input paste");
Từ Documentation jQuery:
Nếu có nhiều bộ xử lý đăng ký, họ sẽ luôn luôn thực hiện theo trình tự, trong đó họ bị trói
Tôi không chắc chắn về câu trả lời mà không thử nghiệm nó, nhưng bạn có thể tự mình kiểm tra bằng Visual Event. http://www.sprymedia.co.uk/article/Visual+Event Chỉ cần làm theo hướng dẫn trên trang. –