0
<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 上运行它时,我得到空值。有任何想法吗?

这是js小提琴:

http://jsfiddle.net/49wyG/

谢谢!

4

4 回答 4

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>

对我来说效果很好。

于 2013-03-22T02:34:12.830 回答
2

data-type属性在选项元素上,而不是在选择上。我假设您想要当前选择的数据类型

<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>

http://jsfiddle.net/49wyG/4/

于 2013-03-22T02:33:57.160 回答
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'))" >
于 2013-03-22T02:32:20.093 回答
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”对象是列表,而不是选项

于 2013-03-22T02:43:15.623 回答