2016-04-19 33 views
1

Chosen pluginの選択されたオプションのIDを取得できました。ここにはjsfiddle Demoがあります。Jquery Chosenドロップダウンで選択されていない値のIDを取得

今、私は選択されていないオプションのIDを取得する方法がわかりません。私は選択されたオプションのIDを取得するためにこのコードを使用しています。オプションの選択を解除すると

var SelectedIds = $(this).find('option:selected').map(function() { 
     if ($(this).attr('value') == params.selected) 
     return $(this).prop('id') 

    }).get(); 
    alert(SelectedIds); 
+0

あなたは右の選択オプション、任意の数の後に選択されていないすべてのオプションのIDを取得したいですか? – itzmukeshy7

+0

@ itzmukeshy7。基本的には、現在選択されていないオプションのIDのみを要求します。例:米国の国がドロップダウンで選択されている場合ユーザーがUnited Statesを選択解除したとき。私はそのIDを取得したい。他の国と同じです。 – Kamran

+0

ユーザーが選択したオプションの選択を解除すると、ここでいくつかの機能を実行したいのですか? – itzmukeshy7

答えて

4

は、変更イベントを取得しますが、paramsオブジェクトは、あなたがselectedを使用しているだけのように使用することができますdeselected性質を持っています。

私はあなたが証明するためjsfiddleをした:http://jsfiddle.net/1eut1c3d/

$("#chosen").chosen().on('change', function(evt, params) { 

    if (params.selected !== undefined) { 
    var selectedID = $(this).find('option:selected').map(function() { 
     if ($(this).attr('value') == params.selected) 
     return $(this).prop('id') 
    }).get(); 
    alert("Selected: " + selectedID); 
} 
if (params.deselected !== undefined) { 
    var deselectedID = $(this).find('option').not(':selected').map(function() { 
     if ($(this).attr('value') == params.deselected) 
     return $(this).prop('id') 
     }).get(); 
     alert("Deselected: " + deselectedID); 
    } 
}); 
+0

だから '.not( ':selected')'は私が逃していた重要な要素だった。ありがとう – Kamran

+0

よろしくお願いします。 '$(this).find( 'option')。map(...)'を実行するだけで、すべてのオプションを見つけることができますが、 '.not( ':選択された ') 'はそれを少し下にフィ​​ルターし、それをより速く見つけさせてくれると私は思う。 –

+1

将来の参照用: '.not()'ドキュメント:https://api.jquery.com/not/ –

関連する問題