Если у меня есть код ниже, текстовые поля серийного номера будут связаны с событиями более одного раза, если новая последовательная кнопка будет нажата несколько раз.
Будет ли это мешать производительности или jQuery регистрирует события только один раз, даже если метод связывания называется многократно?
$(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
}
});
}
});
ОБНОВЛЕНИЕ: Я считаю, что это приведет к добавлению нижеприведенного кода в функцию MonitorSerialTextBoxes.
$('.serial').unbind("propertychange keyup input paste");
Из документации jQuery:
Если зарегистрировано несколько обработчиков, они всегда будут выполняться в том порядке, в котором они были связаны