我的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()
或者它真的不重要吗?
答案 0 :(得分:9)
根据其后继者重写.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);