Jquery On而不是Live用于动态输入

时间:2012-08-09 21:56:48

标签: jquery jquery-on

我有这段代码......

// Display number of pixels left from nav width
$('.inputs input').live('keyup',function() {
    var nav_width = $('#nav-width').val();
    var sumOfVals = 0;
    $('.inputs input').each(function () {
    sumOfVals = sumOfVals + parseInt($(this).val());
});
sumOfVals = nav_width - sumOfVals;
    $('#px-left em').html(sumOfVals);
});

需要在动态添加的输入字段的keyup事件上执行,但我想使用'on'事件。这可能吗?我试过用'on'代替'live',但它没有用。

2 个答案:

答案 0 :(得分:2)

您不能仅将live替换为on。如果您阅读了有关on的文档,您会看到:

.on( events [, selector] [, data], handler(eventObject) )

因此,您可以按照以下方式使用on

$('.closest-parent').on('keyup', '.inputs input', function () { ... })

.closest-parent.inputs最接近的父元素。通过使用最接近的父级而不仅仅是document,您可以提高性能。

答案 1 :(得分:1)

这应该有效:

$(document).on('keyup', '.inputs input', function() {
    var nav_width = $('#nav-width').val();
    var sumOfVals = 0;
    $('.inputs input').each(function () {
    sumOfVals = sumOfVals + parseInt($(this).val());
});