2011-09-29 126 views
3

我注意到即使未更改該選項,也可以觸發<select>的change()。檢查更改後值是否發生了變化()觸發器

請參閱我的jsfiddle示例。

更改選擇將改變顯示的文本輸入。但是,(我知道這是一個有點舒展的),如果您:

  • 選擇下拉通過點擊標籤上Selection:
  • 按下鍵盤上的(假設Show A選擇)
  • 然後選擇用鼠標指針Show A它會觸發change()。

對此有一個簡單的解決方法(現在我正在考慮使用變量來跟蹤最後一次選擇是在更改())後的內容嗎?

編輯: 看來這是一個Chrome特定的問題。我能夠通過使用一個變量來跟蹤上一次選擇的項目是否能夠修復問題。我想這是爲jQuery/Chrome開發人員留下的一個bug。

+0

無法重現,在FF 6,在瀏覽器中您遇到此問題? – Niko

+0

@Niko chrome 14.0.835。只是看到我無法在IE 8上重現它。 – fjdutoit

回答

1

我會的電流值作爲數據存儲單元(而不是變量)這樣的:

$('#variable').data('currentval', $('#variable').val()).change(function() { 
    var t = $(this); 
    if (t.data('currentval') != t.val()) {   
     $(this).data('currentval', $(this).val()); 
     $('#listA').toggle('fast'); 
     $('#listB').toggle('fast'); 
    } 
}); 

http://jsfiddle.net/emMx6/2/

+0

優雅。我甚至沒有意識到data()功能。 – fjdutoit

相關問題