-1

個々のラジオボタンにIDを割り当ててそのように操作することで、実際に問題を理解することができましたが、それでも、なぜこれが機能しないのかわからないので気になります。

取引は次のとおりです。次のようなラジオボタンのグループが2つあるとします。

<input type="radio" name="RadioGroup1" id="Group1True" value="True" /> True
<input type="radio" name="RadioGroup1" id="Group1False" value="False" /> False

<input type="radio" name="RadioGroup2" id="Group2True" value="True" /> True
<input type="radio" name="RadioGroup2" id="Group2False" value="False" /> False

RadioGroup1で選択されているものに応じて、 RadioGroup2ボタンに影響を与えたい。たとえば、ID = "Group1True"が選択されている場合、RadioGroup2ボタンを非表示にします(これを行うには、RadioGroup2ボタンを<div>タグでラップします)。

ただし、ID = "Group1False"が選択されている場合は、 RadioGroup2ボタンを再表示するだけでなく(正常に機能します)、RadioGroup2ボタンをリセットしてオフにします。 これは私が問題にぶつかるところです。

私は次のすべての組み合わせを試しました(そして私が覚えていないいくつかの組み合わせさえも)。 それらのどれも私が望むことをしません。

if ( $("#RadioGroup1:checked").val() == "False" )
{

// HERE'S where I run into problems:

    // This line not only unchecks the RadioGroup2 buttons, it also unchecks
    // the RadioGroup1 buttons, which I DO NOT want it to do!!!!!!!!!

    $("input:radio[@name=RadioGroup2]").removeAttr("checked");


    // This line gives me a JavaScript error saying:
    // "Object doesn't support this property or method"!!!!!!!

    $("input[@name=RadioGroup2]").removeAttr("checked");


    // This line does absolutely nothing

    $("RadioGroup2").removeAttr("checked");

}

先ほど言ったように、ラジオグループ名の代わりにIDを参照することで問題を解決できましたが、なぜこれが機能しないのかわからないことにいらいらしています。

誰かが私を教えてもらえますか?

4

1 に答える 1

3

セレクターの構文が正しくありません。

$('input[name="RadioGroup1"]').whatever();

(実際には、「間違っている」ほど「正しくない」わけではないと思います。セレクターは、「name」ではなく「@name」属性の値を探していました。)

これ#は「name」ではなく「id」値用であるため、#RadioGroup1機能しません。

代わりに、「checked」プロパティを次.removeAttr("checked")のように設定することもできます。false

$('input[name="RadioGroup1"]').prop("checked", false);

ラジオボタンのグループに「クラス」値を指定することもできます。これは、要素名を使用するよりも少し簡潔です。

$('input.radio-group-1')

または何でも。もちろん、それはより多くのマークアップを意味するでしょう。

個人的には、それがより良い方法だと思います。DOMをいじるときは、要素の属性ではなく、DOMオブジェクトのプロパティを操作する必要があります。ただし、属性を削除するとおそらく機能します。

于 2012-06-07T13:54:29.170 に答える