使用JQuery </select>从<select>控件获取自定义html属性

时间:2012-03-10 02:46:36

标签: javascript jquery html select

我想知道我在这里做错了什么?

我有以下HTML:

<select name="somename" id="DropDownList1">
    <option value=""></option>
    <option value="1" valp="7700000000000000">Item 1</option>
    <option value="2" valp="7C08000000000000">Item 2</option>
    <option value="3" valp="5800000000000000">Item 3</option>
</select>

以下加载页面时调用的JS / JQuery代码:

$('#DropDownList1').change(function () {
    onChangeDropDownList1(this);
});

function onChangeDropDownList1(obj) {
    var vP = $(obj).attr('valp');
    alert("valp=" + vP);
};

结果我得到“valp = undefined”

4 个答案:

答案 0 :(得分:6)

this的上下文中,

.change()指的是<select>而不是<option>,因此您没有获得具有valp属性的节点

$('#DropDownList1').change(function () {
    onChangeDropDownList1(this);
});

function onChangeDropDownList1(obj) {
    // Get the selected option
    var vP = $(obj).find(':selected').attr('valp');
    alert("valp=" + vP);
};

Here is a demonstration.

答案 1 :(得分:2)

change功能为您提供的更新select不是option。您需要从中查询:selected值。获得所选选项后,您可以查询valp属性

function onChangeDropDownList1(obj) {
    var vP = $(obj).find('option:selected').attr('valp');
    alert("valp=" + vP);
};

小提琴:http://jsfiddle.net/Jpfs3/

答案 2 :(得分:0)

传递option,而不是select

onChangeDropDownList1($(this).children(':selected'));

或者,从传递的select中获取选项:

var vP = $($(obj).children(':selected')).attr('valp');

答案 3 :(得分:0)

只需将JS代码放在正文的末尾