配列に格納されている値に従ってチェックボックスを設定するスクリプトを作成しています(ユーザーがフォームを元の値に戻すための大きなスクリプトの一部です)。コードは基本的に次のとおりです。jQuery:配列からチェックボックスの値を設定する
$("#myForm :checkbox[name='myName[]']").each(function(){
if($.inArray($(this).val(),initValues)!=-1){
$(this).prop("checked",true);
} else {
$(this).prop("checked",false);
}
});
initValuesには、最初にチェックされたボックスの値属性が含まれています。
スクリプトは$("#myForm :checkbox[name='myName[]']")
の最初の要素をチェックしますが、それ以降の要素はすべてチェックされていないように見えます。 Firebugは、checked
属性が変更されているが、ボックス自体はチェックされていないことを示しています。
私はprop()
の代わりに、同じ結果を持つすべてのattr()
のverious順列を試してみましたが、スクリプトがOS X上のFirefox 11.0とChrome 18.0で同じように動作し
いくつかのHTMLを入力してください。 '.val()'が期待する値を返さない可能性があります。 – Blazemonger
'.prop()'が正しいです。あなたのコードはうまく動作します[ここ](http://jsfiddle.net/mblase75/DmVYa/)。最近のバージョンのjQueryを使用していますか? – Blazemonger
私はそれを考慮しましたが、私が知る限りでは、 '$ .inArray()'テストは必要なように動作しています。 HTMLは膨大なプロジェクトの一部ですのでここに表示するのは少し複雑ですが、テストケースを試してみましょう。ありがとうございます – toppy