1

わかりましたので、ラジオ ボタンを持つ要素があり、追加ボタンがクリックされたときにこの要素を複製します。ただし、そうすると、最初の要素のボタンがオフになります。なぜこれが起こるのかはわかっていますが、回避策を実装し始めると、期待どおりに動作しません。

これが私の解決策でした:

    //This stores the value of the checked element into a variable before the clone
    var radioKeep = $('input.event'+(numOfParts-1)+':checked').val();

    //Cloned the element passed into the function
    $(element).parent().clone(true, false).insertAfter($(element).parent());

次に、クローンの後、次のjqueryとxpathの組み合わせで最初のラジオボタンが再チェックされるようにします。

    $('input.event'+(numOfParts-1)+'[@value='+radioKeep+']').attr('checked', 'checked');

その結果、すべての無線要素がチェックされます...なぜですか???

前もって感謝します。

4

1 に答える 1

1

要素を複製すると、新しい要素は古い要素と同じ値とクラスを持ち、両方のチェック済みの値を設定していますが、チェックできるのは 1 つだけなので、最後の要素がチェックされます。.まずそれを修正します

$('input.event'+(numOfParts-1)+'[@value='+radioKeep+']').first().attr('checked', 'checked');

ただし、1.3.2 で xpath サポートが削除されたため、1.3.2 より新しい jquery を使用している場合、これはまだ機能しません。@

$('input.event'+(numOfParts-1)+'[value='+radioKeep+']').attr('checked', 'checked');

これで、将来的に問題が発生する可能性があります。.attr()プロパティを設定するために使用していますが、実際には.prop("checked", true)代わりに使用する必要があります。

$('input.event'+(numOfParts-1)+'[value='+radioKeep+']').prop('checked', true);

これで問題が解決しない場合は、コードのテストに使用できるサンプル HTML と機能する関数を投稿することをお勧めします。周囲の機能がなく、html が欠落しているため、ここで多くの仮定を立てました。

于 2013-01-16T06:51:15.207 に答える