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

Bru*_*dit 7 javascript jquery dom

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

$("#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');
}
Run Code Online (Sandbox Code Playgroud)

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

PPv*_*PvG 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+
Run Code Online (Sandbox Code Playgroud)

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

$(document).on('change', '#qandatbl td.weight input', calculateTotal);
Run Code Online (Sandbox Code Playgroud)

  • 还要注意,理想情况下你不会使用`$(document)`来设置你的处理程序:虽然这正是`.live()`你最好使用最接近的父元素到你的实际目标元素(s )只要父母在你调用`.on()`时存在就可以了.(可能是你的"#qandatbl"元素?) (2认同)