2012-08-09 35 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()); 
});