如何将我的代码从.live()更改为.on()

时间:2012-01-08 10:29:06

标签: javascript jquery dom

我的jquery下面有一个live()函数:

$("#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');
}

现在有人说live()功能正在逐渐消失,最好使用on()功能。如果这是真的,那么如何将上面的代码更改为on()函数而不是live()函数?重要的是我不使用live()或者它真的不重要吗?

1 个答案:

答案 0 :(得分:9)

根据documentation

  

根据其后继者重写.live()方法很简单;这些是用于所有三种事件附件方法的等效调用的模板:

$(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+

所以在你的情况下,如果你使用的是jQuery 1.7+,那就是:

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