2011-02-16 5 views
2

선택 또는 텍스트 필드의 변경 내용에 따라 값이 업데이트되는 양식을 만들려고합니다. 왜이 jquery는 무한 루프에 들어가겠습니까? 거의 동일하지 않습니다.

은 내가 다음 사용자가 I이 옵션을 선택하면이 무한 루프에 들어갑니다 몇 가지 이유를 들어 텍스트 상자

 
jQuery('select[name=measure],input[name=amount]','form').live('change keyup',function(){ 
    alert('triggered'); 
}); 

을 변경하는 경우에 대한의 keyup을 추가

 
jQuery('select[name=measure]','form').live('change',function(){ 
alert('triggered'); 
}); 

시작하고있다 (무한대가 아니더라도) 키 업에서 여러 번 트리거됩니다. 나는 텍스트 상자

 
...live('keyup', function()... 

변화에 변경하면

한 번만 트리거됩니다. 두 개의 별도의 .live 이벤트로 분할 한 다음 별도의 함수를 만들 수도 있지만 효율적인 코드가 아닌 것 같습니다.

답변

1

changekeyupselect[name=measure]input[name=amount]에 붙이고 있습니다.

나는 입력에 change 이벤트가 있고 select에 keyup 이벤트가 있기를 원할 것입니다.

두 가지 실시간 이벤트를 분리하는 것이 좋습니다. 아마 form 셀렉터가 필요하지 않습니다.

$('select[name=measure]').live('change', SomeFunction); 

$('input[name=amount]').live('keyup', SomeFunction); 

function SomeFunction() { 
    // this isn't inefficient 
} 

작업 예 : http://jsfiddle.net/K7586/


또는 delegate()

$("form") 
    .delegate("input[name=amount]", "keyup", SomeFunction) 
    .delegate("select[name=measure]", "change", SomeFunction); 

function SomeFunction() { 
    // this isn't inefficient 
} 
+0

덕분에 사냥꾼을 사용할 수 있습니다. 나는 이것이 코드의 가장 효율적인 사용이라고 생각했다. 델리게이트가 더 효율적이기로되어 있다는 것을 알고 있으므로 델리게이트를 사용할 것이고, 더 좋은 코드처럼 보일 것입니다. 건배 – pedalpete

관련 문제