2011-02-16 38 views
2

我想要一個表單,其中的值根據選擇或文本字段中的更改進行更新。爲什麼這個jquery會進入一個無限循環,幾乎相同的循環不會?

我開始與

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

然後我說,當用戶改變文本框

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

出於某種原因,當我選擇一個選項,這個進入一個無限循環的KEYUP,並在鍵盤上多次觸發(儘管不是無限的)。

當我改變

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

更改文本框只能觸發一次。 我可以將它們分成兩個獨立的.live事件,然後創建一個單獨的函數,但這似乎不是有效的代碼。

回答

1

它連接的changekeyupselect[name=measure]input[name=amount]

我懷疑你想輸入有一個改變事件和選擇有一個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 2011-02-16 19:04:03

相關問題