我想知道我在这里做错了什么?
我有以下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”
答案 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);
};
答案 1 :(得分:2)
change
功能为您提供的更新select
不是option
。您需要从中查询:selected
值。获得所选选项后,您可以查询valp
属性
function onChangeDropDownList1(obj) {
var vP = $(obj).find('option:selected').attr('valp');
alert("valp=" + vP);
};
答案 2 :(得分:0)
传递option
,而不是select
:
onChangeDropDownList1($(this).children(':selected'));
或者,从传递的select
中获取选项:
var vP = $($(obj).children(':selected')).attr('valp');
答案 3 :(得分:0)
只需将JS代码放在正文的末尾