3

を使用して動的にラジオボタンを選択しようとしていました

$('#dashboard2 #dbMainPanel #bar2 #ddShowBar').attr('checked', true);

しかし、これはform.reset()失敗の原因になります。ページには多くのボタンがあり、選択時にフォームタグを使用しないため

$('#dashboard1 #dbMainPanel #bar1 #ddShowBar').attr('checked', true); 

他のすべてのラジオ ボタンはリセットされます。

これを回避する方法は?ページ内の既存のラジオ ボタンを選択したままにしてから、現在のラジオ ボタンを動的に変更します。

  1. 最初のクリックpieインdiv1
  2. 次にクリックbarしますdiv2

このシナリオではpie、 indiv1barindiv2を選択したい

フィドル

フィドル2

4

2 に答える 2

3

使ってみました.prop()か?

$('#ddShowBar').prop('checked', true);

http://api.jquery.com/prop/

属性

とプロパティ 特定の状況では、属性とプロパティの違いが重要になる場合があります。jQuery 1.6 より前では、一部の属性を取得するときに .attr() メソッドがプロパティ値を考慮に入れることがあり、一貫性のない動作を引き起こす可能性がありました。jQuery 1.6 以降、.prop() メソッドはプロパティ値を明示的に取得する方法を提供し、.attr() は属性を取得します。 たとえば、selectedIndex、tagName、nodeName、nodeType、ownerDocument、defaultChecked、および defaultSelected を取得して、.prop() メソッドで設定する必要があります。jQuery 1.6 より前では、これらのプロパティは .attr() メソッドで取得できましたが、これは attr の範囲内ではありませんでした。これらには対応する属性がなく、単なるプロパティです。

さらに:あなたの例では、ラジオ グループの複数のID要素と重複する attr: nameを生成しています。
すべての新しいグループnameには、前のグループのものとは異なるラジオが必要です。コールターc変数で簡単に実行可能:

この例では、最初のグループの無線に次の名前が付けられますtxtradio0。次のグループのラジオより: txtradio1etc...

他の行のラジオをチェックしたままにするには、グループの NAME 属性を変更するだけです。

デモ

var r = ['Pie','Bar','Line','Area','Scatter'];
var c = 0;  // a group counter // set to 1 if you want

function populateWithRadio(){

    var rB = "<div class='radiobuttons'>";
    for(var i=0; i< r.length; i++){         // create radios
        rB += "<input type='radio' class='ddShow"+ r[i] +"' name='txtradio"+ c +"' value='"+r[i]+"'/>"+ r[i] ;
    }
    rB += "</div></br></br>";

    c++;                         // increase Group counter 
    return rB;                   // returns the generated HTML to append
}


$('#div1').append( populateWithRadio() );
$('#div2').append( populateWithRadio() );

$(document).on("click", '.radiobuttons input', function () {
    alert( 'CLASS: '+ this.className +'\n NAME: '+ this.name );
});
于 2013-08-13T14:48:59.367 に答える