0

我正在使用这个 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/

目的是使用#selection 元素选择您希望从#test 元素中提取的数据变量。它应该提醒您该数据变量的值是什么。

datavar变量设置正确,因为打印alert(datavar);出正确的值。但是,第二个测试警报(这是此测试的目的)将其显示为undefined. 第三个测试警报只是测试以确保您可以通过硬编码变量来显式调用数据变量。

我不明白为什么它会回来undefined。我测试了 的类型datavar,它确实是一个字符串,所以我希望它的行为与硬编码时一样。有人可以对此有所了解吗?

4

1 回答 1

2

尝试这个:

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

问题在于所选文本中的一些换行符(由 html 格式引起),因为它们不包含在选项开始和结束标记之间。所以你只需要修剪它。

小提琴

或者修复您的选项以在结束标签和结束标签之间包含文本。

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

小提琴2

于 2013-06-28T02:31:58.010 回答