2012-01-08 7 views
7

que tienen una función live() en mi jQuery a continuación:Cómo cambiar el código de una .live() para .ON()

$("#qandatbl td.weight input").live("change", calculateTotal); 

function calculateTotal() 
{ 
    var totalweight = hundred; 
    $("#qandatbl td.weight input").each(function (i, elm){ 
     totalweight = totalweight - parseInt($(elm).val(), 10); 
    }); 

    $("#total-weight").text(totalweight).append('%').css('font-weight', 'bold'); 
} 

Ahora, algunas personas dicen que la función live() está desacelerando desvaneciendo y que es mejor usar la función on(). Si esto es cierto, ¿cómo cambio el código anterior a la función on() en lugar de la función live()? ¿Es importante que no use live() o realmente no importa tanto?

Respuesta

9

Según la documentation:

Reescribiendo el método .live() en términos de sus sucesores es sencillo; éstas son las plantillas para llamadas equivalentes para todos los métodos de fijación de tres eventos:

$(selector).live(events, data, handler);    // jQuery 1.3+ 
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+ 
$(document).on(events, selector, data, handler);  // jQuery 1.7+ 

Así, en su caso, si estás usando jQuery 1.7+, sería:

$(document).on('change', '#qandatbl td.weight input', calculateTotal); 
+0

gracias :) mejor respuesta – BruceyBandit

+0

debe aceptar su respuesta si fuera correcta. :) – redmoon7777

+2

Tenga en cuenta también que, idealmente, no usará '$ (documento)' para configurar su controlador: aunque eso es exactamente lo que '.live()' le conviene usar el elemento primario más cercano a su objetivo real elemento (s) que pueda, siempre que ese padre exista en el momento de su llamada a '.on()'. (Posiblemente su elemento "#qandatbl"?) – nnnnnn

Cuestiones relacionadas