6

次のコードを含む html ファイルがあります。

<select id="gouv" name="gouv">
...some options here...
</select>

および次の jQuery コード:

$('#gouv option[value="myvalue"]').attr("checked","checked");

ご存じのとおり、これは値「myvalue」のオプションをチェック済みに設定します。これは完全に機能します。

問題は、チェック済みとして設定したいオプションの値がわからないことです。これは、この値がグローバル変数内に格納されている関数の結果であるためです。簡単にするために、長いデバッグの後、問題を次のように減らしました。

var ident="myvalue";
$('#gouv option[value=ident]').attr("checked","checked");

このコードは機能しません。

なぜ機能しないのか知りたいのですが、値を変数として渡すことはできませんか? そして、これに対する回避策はありますか?

4

3 に答える 3

21
var ident="myvalue";
$('#gouv option[value="' + ident + '"]').attr("selected", "selected");

selectedはラジオ用です<option>checked

propjQueryのバージョンが> 1.6の場合は、より適切に使用してください

$('#gouv option[value="' + ident +'"]').prop("selected", true);

filter属性セレクターの代わりに使用する方がよいことに注意してください。

$('#gouv option').filter(function(){
    return this.value == indent;
}).prop("selected", true);

なぜfilter価値のために使うべきなのか

blackberry をサポートする必要がある場合、jQuery が処理する option.value にバグがあります。

$('#gouv option').filter(function(){
    return $(this).val() == indent;
}).prop("selected", true);
于 2012-06-30T19:44:40.157 に答える
5

jQuery の.val()(こちらを参照) は、値でオプションを選択します。

var ident = "myvalue";
$('#gouv').val(ident);

これは次と同等です。

var ident = "myvalue";
$('#gouv option[value="' + ident + '"]').attr("selected", "selected");

ident二重引用符が含まれている場合、後者に問題があることを除いて。

于 2012-06-30T19:52:58.677 に答える