Si tengo el código siguiente, los cuadros de texto de la clase de la serie se vincularán a los eventos más de una vez si se presiona el nuevo botón de serie varias veces.¿La vinculación de eventos a elementos en jQuery varias veces tiene un efecto knock-in?
¿Esto obstaculizará el rendimiento o jQuery solo registra eventos una vez aunque se llame varias veces al método bind?
$(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: Creo que será así sería añadir el siguiente código para los thiings función f MonitorSerialTextBoxes?
$('.serial').unbind("propertychange keyup input paste");
de la documentación de jQuery:
Si hay varios controladores registrados, siempre se ejecutan en el orden en que fueron obligados
No estoy seguro acerca de la respuesta sin probarla, pero podría probarla usted mismo con Visual Event. http://www.sprymedia.co.uk/article/Visual+Event Simplemente siga las instrucciones en la página. –