2013-06-28 22 views
0

我與這個jQuery代碼的工作:jQuery的 - 不能提取。數據()的屬性計算的關鍵

$('#selection').bind("change", function(){ 
    var selected = $(this).find('option:selected'); 
    var datavar = selected.text().toLowerCase(); 
    //alert(datavar); 
    //alert('looking for '+datavar+$('#test').data(datavar));  
    //alert($('#test').data('var1')) 
}); 

http://jsfiddle.net/Zwe6h/

目的是選擇你想從提取哪些數據變量#test元素使用#selection元素。它應該提醒你該數據變量的值是多少。

datavar變量設置正確,因爲alert(datavar);打印出正確的值。 但是,第二個測試警報(這是本測試的目的)將其顯示爲undefined。第三個測試警報只是測試以確保您可以通過對變量進行硬編碼來顯式調用數據變量。

我不明白爲什麼它會用undefined回來。我測試了datavar的類型,它確實是一個字符串,所以我希望它的行爲就像硬編碼一樣。有人可以對此有所瞭解嗎?

回答

2

試試這個:

alert('looking for '+datavar + $('#test').data($.trim(datavar))); 

問題是一些換行字符(由HTML格式casued)在文本選擇,因爲它們不包含選項開始和結束標記之間。所以你只需要修剪它。

Fiddle

或修復您的選項,包括關閉和結束標記之間的文本。

<select name='selection' id='selection'> 
    <option value='1'>var1</option> 
    <option value='2'>var2</option> 
</select> 

Fiddle2

+0

非常感謝!永遠不會想到換行符! – Ryan

+0

@Ryan歡迎您。 – PSL