1

別のリストからのユーザーの選択に基づいてプログラムで更新するラジオ ボタンのリストがあります。このコードは、選択した項目に一致するラジオ ボタンを適切に見つけて選択しますが、以前に選択したラジオ ボタンの選択を解除しません。

$('#major_groups input[type=radio]').each(function(){
        if($(this).attr("value") == group_name){
            $(this).prop("checked",true).checkboxradio('refresh');
        }
});

major_groups div のラジオ ボタンはすべて同じ名前であるため、1 つを選択すると他のラジオ ボタンが選択解除されると考えました。ボタンをもう一度ループしてすべてを更新することで機能するようになりましたが、これは非効率的です。

また、.prop("checked",true)変更イベントを発生させますか?

4

2 に答える 2

2

次のように、ラジオ ボタンでクリック イベントをトリガーするだけではどうでしょうか。

$('#major_groups input[type=radio]').each(function(){
    if($(this).attr("value") == group_name){
        $(this).click();
    }
});
于 2013-01-06T18:07:41.860 に答える
0

あなたの各ループは、特定の値を持つ無線で更新を呼び出すだけで、同じグループ内の他の人には呼び出されません。グループの実際の入力は自動的にチェック解除されますが、プラグインは選択解除されたものも更新しない限り認識しません。

これを試して:

var $radios=$('#major_groups input[type=radio]');
/* first check the appropriate radio*/
var $radioToUpate=$radios.filter(function(){
        return this.value=group_name;       
}).prop("checked",true);
/* then refresh all radios with same name*/
$radios.filter('[name="'+ $radioToUpate.attr('name') +'"]').checkboxradio('refresh');

プラグインのドキュメントへのリンクは、グループ全体を処理する可能性のあるプロパティの変更を処理するメソッドがプラグインにあるかどうかを確認するのに役立つ場合があります

于 2013-01-06T18:30:34.723 に答える