<select onchange="alert($(this).attr('data-type'))">
<option data-type="1" value="a">a</option>
<option data-type="2" value="b">b</option>
</select>
当我在jsfiddle上运行时,我得到null。有什么想法吗?
这是js小提琴:
谢谢!
答案 0 :(得分:5)
你必须抓住元素的选定索引并从那里开始,试试这个:
<select onchange="alert(this.options[this.selectedIndex].getAttribute('data-type'));">
<option data-type="1" value="a">a</option>
<option data-type="2" value="b">b</option>
</select>
我的工作很好。
答案 1 :(得分:2)
data-type
属性位于选项元素而非select。我假设你想要当前选择的数据类型
<select onchange="alert($(this).find(':selected').attr('data-type'))">
<option data-type="1" value="a">a</option>
<option data-type="2" value="b">b</option>
</select>
答案 2 :(得分:1)
this
是指select
而不是option
。试试这个:
<select>
<option data-type="1" value="a" onclick="alert($(this).attr('data-type'))">a</option>
<option data-type="2" value="b" onclick="alert($(this).attr('data-type'))">b</option>
</select>
或者,您可以使用:selected
选择器或this.selectedIndex
来抓取option
。像这样:
<select onchange="alert($(':selected',this).attr('data-type'))" >
答案 3 :(得分:1)
你需要这样做......
<select onchange="alert(this.options[this.selectedIndex].getAttribute('data-type'))">
<option data-type="1" value="a">a</option>
<option data-type="2" value="b">b</option>
</select>
更改事件中的“this”对象是列表,而不是选项