2012-08-09 42 views
1

我有这样的代码......jQuery的在代替现场的动态输入

// 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事件中执行,但我想用“关于”事件。这可能吗?我尝试用'开'取代'live',但它没有奏效。

+1

我本来很想看看你是如何试图取代它的,但似乎有人已经为你写了。习惯于阅读具有[明确指示](http://api.jquery.com/live/)的文档。 – kapa 2012-08-09 21:59:50

回答

2

你不能只用on取代live。因此,通过下面你会使用on这样

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

:如果你了解on你会看到这个文档

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

.closest-parent.inputs最接近的父元素。通过使用最接近的父代来代替document,可以提高性能。

+0

你可以替换它,只需将它附加在'document' - 'live'上基本上是一样的。不管它是不是一个好主意都是一个不同的主题:)。 – kapa 2012-08-09 22:01:41

+0

是的,但是如果他要使用'on'然后利用它我会说... – elclanrs 2012-08-09 22:02:42

+0

我同意这一点。我只是说你说的这种方式:'你不能只用生活上的替代',这根本不是真的。 – kapa 2012-08-09 22:03:47

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()); 
});