2016-11-18 62 views
2

我对jquery有基本的理解,但不知何故,我未能深入获取元素的数据。如何获取选定选项中元素的数据?

这是我的HTML,这是一个选择框

<select id="from_acc"> 
<option value="1" selected="selected">Apple<span class="cr_info" data-value="1.00000" data-symbol="="></span></option> 
<option value="1">Orange<span class="cr_info" data-value="2.00000" data-symbol="*"></span></option> 
</select> 

我试图找到选择的选项先获得元素跨度持有的数据属性。

下面是我当前的代码,我希望在可变字符串1得到一个“=”,但是这给了我一个未定义的值,请指点

string1=$('#from_acc').find('option:selected').find('.cr_info').data('symbol'); 
alert(string1); 
+1

是否在选项内呈现? – guradio

+0

是的,只是一个元素来记录我想要的值 –

+1

为什么不直接把数据属性直接放到选项不需要跨度,因为我怀疑它是呈现的 – guradio

回答

3

根据MDN,option元素只能包含文本。在实践中,看起来浏览器会剥离span元素及其内容。

data-属性放在option元素上。

2

降下来不会支持范围或任何形式的选项标签,可以在option

$(document).ready(function(){ 
 
$("#from_acc").change(function(){ 
 
     var symbol = $(this).find('option:selected').data('symbol'); 
 
     var value = $(this).find('option:selected').data('value'); 
 
     alert("symbol: "+ symbol +" value: "+ value) 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<select id="from_acc"> 
 
<option value="1" selected="selected" data-symbol="=" data-value="1.00000">Apple</option> 
 
<option value="1" data-symbol="*" data-value="2.00000">Orange</option> 
 
</select>

看到它通过检查元素,它不会显示跨度那里,你可以做到这一点通过增加 attribute
+0

很多可以实现与使用单词'这个'。扩展它的使用方式会有所帮助 –