jQuery で正しい選択を見つけるには、HTML ツリーで複数の選択が可能であり、予想される出力が混乱する可能性があることを考慮してください。
(:selected).val()
または、複数の選択オプションでは正しく機能し(:selected).text()
ません。したがって、最初にすべての選択の配列を保持して.map()
から、目的の引数またはテキストを返します。
次の例は、これらの問題を示し、より良いアプローチを提供します
<select id="form-s" multiple="multiple">
<option selected>city1</option>
<option selected value="c2">city2</option>
<option value="c3">city3</option>
</select>
<select id="aioConceptName">
<option value="s1" selected >choose io</option>
<option value="s2">roma </option>
<option value="s3">totti</option>
</select>
<select id="test">
<option value="s4">paloma</option>
<option value="s5" selected >foo</option>
<option value="s6">bar</option>
</select>
<script>
$('select').change(function() {
var a=$(':selected').text(); // "city1city2choose iofoo"
var b=$(':selected').val(); // "city1" - selects just first query !
//but..
var c=$(':selected').map(function(){ // ["city1","city2","choose io","foo"]
return $(this).text();
});
var d=$(':selected').map(function(){ // ["city1","c2","s1","s5"]
return $(this).val();
});
console.log(a,b,c,d);
});
</script>
すべての選択を配列に保持し、探しているものを返す正しく動作するc と dと比較して、バリアントa、bの異なるバグが発生しやすい出力を参照してください。