2012-03-10 19 views
3

私はここで何が間違っているのでしょうか?<select> JQueryでカスタムhtml属性を取得

私は、次のようなHTMLがあります。私は、 "未定義= VALP" を得る結果

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

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

<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のコードを

答えて

6

thisではなく<option>より<select>を指し、そのhttp://jsfiddle.net/Jpfs3/ノードを取得していません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.

+0

皆さんは素晴らしいです!ありがとう! – ahmd0

2

change機能は、optionではなく更新されたselectを提供しています。あなたはそれから:selected値を照会する必要があります。あなたが選択したオプションを持っていたら、valp属性を照会することができます

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

フィドル:.change()の文脈で

+0

ありがとうございます。 – ahmd0

0

selectoptionのないパス:

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

または、渡さselectからオプションをつかむを:

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

直前にJSコードを置きます体の終わり

関連する問題