Se si dispone del seguente codice, le caselle di testo di serie seriali verranno associate agli eventi più di una volta se il nuovo pulsante seriale viene premuto più volte.Gli eventi vincolanti per elementi in jQuery più volte hanno un effetto knock-on?
Questo ostacolerà le prestazioni o jQuery registrerà gli eventi una sola volta anche se il metodo di bind viene chiamato più volte?
$(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: credo che sarà così sarebbe aggiungendo il codice sottostante per i thiings funzione FIX MonitorSerialTextBoxes?
$('.serial').unbind("propertychange keyup input paste");
dal disco della documentazione jQuery:
Se ci sono più gestori registrati, saranno sempre eseguiti nell'ordine in cui sono stati legati
Non sono sicuro della risposta senza testarla, ma è possibile testarla da soli con Visual Event. http://www.sprymedia.co.uk/article/Visual+Event Basta seguire le istruzioni sulla pagina. –