選択コントロールで現在選択されているオプションのoptgroupラベルの値を見つけようとしています。以下は、IMが何をしようとしているかを示すためのHTMLです。
<select id='sector_select' name='sector_select' data-placeholder="Select Sector..." style="width:200px;" class="chzn-select">
<option value='' selected='selected'>All Sectors</a>
<optgroup label="Consultancy Services">
<option value='Employment placement/ recruitment'>Employment placement/ recruitment</option>
</optgroup>
<optgroup label="Supplies">
<option value='Food, beverages and related products'>Food, beverages and related products</option>
</optgroup>
</select>
<script type="text/javascript">
$('#sector_select').change(function ()
{
var label=$('sector_select :selected').parent().attr('label');
console.log(label);
});
</script>
上記のコードは、オプション以外のselect要素の読み取り親のため、undefinedを提供します。何か案は?
IDセレクター に#
がありません。
$('#sector_select').change(function ()
{
// ↓
var label=$('#sector_select :selected').parent().attr('label');
console.log(label);
});
偽の</a>
タグもあります
<option value='' selected='selected'>All Sectors</a>
その後、スタイルを改善することができます。
$('#sector_select').on('change', function ()
{
var label = $(this.options[this.selectedIndex]).closest('optgroup').prop('label');
console.log(label);
});
これは、<option>
にない<optgroup>
のundefined
を引き続き記録します。そのシナリオをどのように扱うかはあなた次第です。デモ: http://jsfiddle.net/mattball/fyLJm/
select要素idを選択して、選択したアイテムのoptgroupラベルを返す関数を作成できるかどうか疑問に思っています。 「これ」は$()内で私を混乱させます。 onchangeイベント以外で使用できる関数
function logOptgroupLabel(id)
{
var elt = $('#'+id)[0];
var label = $(elt.options[elt.selectedIndex]).closest('optgroup').prop('label');
console.log(label);
}
$('#sector_select').on('change', function () {
logOptgroupLabel(this.id);
});