2012-08-09 5 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 이벤트에 실행해야하지만 이벤트 '에'를를 사용하고 싶습니다. 이것이 가능한가? 나는 'on'으로 'live'를 대체하려고했지만 작동하지 않습니다.

+1

나는 당신이 어떻게 그것을 대체하려했는지에 관해 관심이 있었을 것이지만 누군가가 당신을 위해 그것을 이미 작성한 것처럼 보입니다. [명백한 지시 사항] (http://api.jquery.com/live/)이있는 문서를 읽는 데 익숙해집니다. – kapa

답변

2

그냥 onlive을 대체 할 수 없습니다. 그래서이 같은 on를 사용하는 거라고 따라

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

: 당신은 당신이 볼 수 on에 대한 문서를 읽어 보면

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

.closest-parent.inputs에 가장 가까운 부모 요소이다. 단지 document 대신 가장 가까운 부모를 사용하면 성능이 향상됩니다.

+0

대체 할 수 있습니다. 단순히'document'에 붙이면됩니다 -'live'는 기본적으로 같습니다. 그것이 좋은 생각인지 아닌지는 다른 주제입니다 :). – kapa

+0

그래, 그가 '켜기'를 사용한다면 그걸 이용하면된다고 말할거야. – elclanrs

+0

그리고 나는 그것에 동의한다. 나는 방금 당신이 말한 방식을 주장했다. '그냥 살다'를 단순히 바꿀 수는 없다. 단순히 사실이 아니다. – kapa

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