2013-06-28 68 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