2012-05-03 3 views
5

クリックしなさい:私はマルチドロップダウンなどを選択している複数のドロップダウンでオプション

<select id="myList" multiple="multiple"> 
    <option value="1">Opt #1</option> 
    <option value="2" selected="selected">Opt #2</option> 
    <option value="3" selected="selected">Opt #3</option> 
    <option value="4">Opt #4</option> 
</select> 

私はその後、Opt #4を選択した場合に、どのように私は、唯一のOpt #4ないOpt #2Opt #3を得るのですか? Opt #4 - 私は私がクリックされたオプションが欲しいしかし

var selectedOptions = $("#myList option:selected"); 

:私は、私は、このことにより、選択したすべてのオプションを取得することができます知っています。これは可能ですか?

編集:changeイベント内でリストを操作するため、clickイベントではできません。複数の行方不明も追加。ユーザーが押したCNTRLキーなしオプト#4をクリックした場合

+0

は何を達成したいですか? 「クリック」オプションを取得するには、なぜマルチ選択ですか? – MatuDuke

+2

選択タグに 'multiple'属性を追加していませんでしたか? –

+0

あなたは 'select'から' mulitple = "multiple"属性を見逃しました。それ以外はうまくいくはずです。 – phuzi

答えて

7

あなたは各オプション要素のクリックハンドラでそれを得ることができます。

$("#myList option").click(function() { 
    var clickedOption = $(this); 
}); 

更新

編集:私は変更イベント内でリストを操作すると、私ができますクリックイベントでそれをしないでください。

この場合、onを使用してイベントを委任する必要があります。試してみてください:

$("#myList").on("click", "option", function() { 
    var clickedOption = $(this); 
}); 
+0

これは、各オプションに1つのイベントハンドラを追加します。これを呼び出した後にオプションを追加した場合、新しいオプションは期待どおりに機能しません。この問題を回避する方法については、私の解決策を見てください。 –

+0

私はchangeイベントの中でリストを操作しているので、clickイベントではできません。 – Frets

+0

@問題が解決しない場合は、私の更新をチェックしてください。 –

1

ご存知のように、あなたは唯一の選択オプションとして#4 OPT取得します。

ユーザがCntrlキーを押しながらopt#4をクリックした場合、3つのオプションがすべて選択されます。したがって、3つのオプションすべてが返されます。 Opt#4だけが必要な場合は、クリックイベントハンドラを追加する必要があります。

1

次のようなヘルプがありますか?

$('#myList').delegate('option', 'click', function (opt) { 
    alert('Option ' + opt.value + ' was clicked'); 
}); 
関連する問題