0

これは FF ではうまく機能しますが、IE、Chrome、Safari では機能しません。

$('#countryDropDown option').click(function() {
   var countryID = $(this).val();
   dostuff();
});
// countryDropDown = id of select

ご覧のとおり、各オプションにクリック イベントを追加します。

私も試しました

var allOpts = $('#countryDropDown option'),
   l = allOpts.length,
   i = 0;

for (i = 0; i < l; i += 1) {
    $(allOpts[i]).click(function() {
        var countryID = $(this).val();
        doStuff();
    });
}

FF 以外のブラウザでは動作したくありません。私は何を間違っていますか?ありがとう

4

3 に答える 3

2

問題は、本当にこのようにする必要があるかどうかです。要素にアクセスする必要はないoptionので、次のものも使用できます.change()

var countryID;

$('#countryDropDown').change(function() {
   countryID = $(this).val();
   dostuff();
});

アップデート:

ドキュメントによると、.val()動作するはずですが、何らかの理由で動作しない場合は、次のようにします。

var countryID;
$('#countryDropDown').change(function() {
   countryID = $('option:selected', this).val();
   dostuff();
});

更新 2:

それが関連しているかどうかはわかりませんが(それでも機能するはずだと思います)、option要素にvalue属性がない可能性があります。

<option>Foo</option>

もしそうなら、.text()代わりに試してみてください.val()

$('option:selected', this).text();
于 2010-05-12T10:21:12.650 に答える
1

ニャー私たちは同じ問題を抱えています...

これが解決策です:

各オプションのIDにアクセスしたい場合。これで十分です。

$("#countryDropdown").change(function() {
   var countryId = $('option:selected',this).attr('id');
   dostuff();
});
于 2011-06-23T08:10:56.003 に答える
0

val() は、フォーム要素の値を取得するために使用されます。オプションはフォーム要素ではなく、サブ要素です。さらに、キーボードを使用する場合、あなたのアプローチは機能しません。このようにすると良いでしょう。

$("#countryDropdown").change(function() {
    var countryId = $(this).val();
    dostuff();
});
于 2010-05-12T10:21:51.587 に答える