以前の隣人のラジオボタンを繰り返し処理しています。私のhtmlは次のようになります:
<div class="holder">
<span class="">some text</span>
<input type="radio" name="test_capability" value="primary" checked="" />
</div>
<div class="holder">
<span class="">some text</span>
<input type="radio" name="test_capability" value="primary" checked="checked" />
</div>
<div class="holder">
<span class="">some text</span>
<input type="radio" name="test_capability" value="primary" checked="" />
</div>
red
隣接するラジオ ボタンがオンになっているスパンにクラスを追加しようとしています。これが私が試した方法です:
$('.holder span').each(function(){
var spanElement = $(this);
if(spanElement.nextAll(':radio:first').is(':checked')){
spanElement.addClass("red");
}
});
私はいつも class を持つ最後のスパン (3 番目の所有者の div のもの) で終わりますred
。しかし、ご覧のとおり、中央のものはチェックされています。checked=checked
最初のスパンに設定すると同じことが起こります
アップデート
また試してみました:
$('.holder span').each(function(){
if($(this).next().attr("checked") == "checked"){
$(this).addClass("red");
}
});
同じ結果で、他に何を試せばよいかわかりません。
更新 II :
Html は、サーバー側から生成された以前の情報でレンダリングされるため、checked=checked
HTML が作成されると、ラジオ入力要素は 1 つだけになります。
ドキュメント準備機能でこの反復トラフ スパンを実行しています。