我正在使用这个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'))
});
目的是使用#selection元素选择要从#test元素中提取的数据变量。它应该提醒您该数据变量的值是什么。
datavar
变量设置正确,因为alert(datavar);
打印出正确的值。
但是,第二个测试警报(此测试的目的)将其显示为undefined
。第三个测试警报只是测试以确保您可以通过对变量进行硬编码来显式调用数据变量。
我不明白为什么会回来undefined
。我测试了datavar
的类型,它确实是一个字符串,所以我希望它的行为就像硬编码一样。有人可以对此有所了解吗?
答案 0 :(得分:2)
试试这个:
alert('looking for '+datavar + $('#test').data($.trim(datavar)));
问题在于所选文本中的一些换行符(由html格式化引起),因为它们不包含在选项开始和结束标记之间。所以你只需要修剪它。
<强> Fiddle 强>
或者修复您的选项,将文本包含在结束标记和结束标记之间。
<select name='selection' id='selection'>
<option value='1'>var1</option>
<option value='2'>var2</option>
</select>
<强> Fiddle2 强>