2012-06-07 81 views
-1

我實際上能夠通過將ID分配給我的單個單選按鈕並以這種方式操縱它們來找出我的問題,但我仍然困擾我不明白爲什麼這不起作用。JQuery不會允許我選擇特定的單選按鈕組

這裏的交易:讓我們說我有單選按鈕的那兩團是這個樣子:

<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 

我想影響RadioGroup2按鈕,這取決於在RadioGroup1選擇。例如,如果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,而不是無線電集團名稱來解決我的問題,但我仍然感到沮喪,我不知道爲什麼這是行不通的。

有人能教導我嗎?

+3

你爲什麼要用「@」?只需使用:radio [name = RadioGroup2]作爲選擇器http://api.jquery.com/attribute-equals-selector/ – Ian

+0

CSS選擇器語法與xpath不同。 – Pointy

+0

@ianpgall - 幫我一個忙 - 請寫下這個答案,以便將它標記爲答案! –

回答

3

您的選擇器語法不正確。

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

(其實我想這不是「不正確」與其說是「錯誤的」,你的選擇是對「@名稱」屬性而不是「名」尋找一個值。)

#是「id」值,而不是「name」,所以#RadioGroup1不適合你。

相反的.removeAttr("checked")則還可以設置「選中」屬性false

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

你也可以給單選按鈕組,一個「階級」的價值,這比使用元素多了幾分簡潔名稱:

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

或其他。當然,這意味着更多的標記。

我個人認爲這是更好的方法;當你搞亂DOM時,你應該操縱DOM對象屬性,而不是元素屬性。然而,刪除該屬性可能會起作用。

+0

+1然而,attibute選擇器中的'@'似乎是從一個較舊的jQuery版本,'.prop'尚不可用。 – pimvdb

+0

@pimvdb我一直在使用jQuery很長一段時間,我從來沒有使用過「@」 - 我認爲這是一個XSL/xpath的東西,但它不是CSS語法。 – Pointy

+0

我知道*#代表ID;那是我的一個錯字。刪除@是我正在尋找的答案;我使用的參考使用它,這就是爲什麼我在那裏。 –

相關問題