2008-10-01 217 views
45

我有以下標記,我想使All單選按鈕被選中。jQuery匹配多個屬性

<ul> 
    <li><input type="radio" value="All" name="Foo"/>All</li> 
    <li><input type="radio" value="New" name="Foo"/>New</li> 
    <li><input type="radio" value="Removed" name="Foo"/>Removed</li> 
    <li><input type="radio" value="Updated" name="Foo"/>Updated</li> 
</ul> 

我想通過屬性來搭配,但我需要匹配2個屬性,@name='Foo'@value='All'

事情是這樣的:

$("input[@name='Foo' @value='all']").attr('checked','checked'); 

有人告訴這可怎麼辦呢?

+1

XPath語法的參數(使用「 @「)已在jQuery 1.2.6中棄用,並從jQuery 1.3中刪除。 CSS語法現在是唯一可用的語法(「[attribute = value]」) – 2009-04-21 08:45:37

回答

67

下面的HTML文件顯示你如何能做到這一點:

<html> 
    <head> 
    <script type="text/javascript" src="jquery-1.2.6.pack.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("a").click(function(event){ 
      $("input[name='Foo'][value='All']").attr('checked','checked'); 
      event.preventDefault(); 
     }); 
     }); 
    </script> 
    </head> 
    <body> 
    <ul> 
     <li><input type="radio" value="All" name="Foo" />All</li> 
     <li><input type="radio" value="New" name="Foo" />New</li> 
     <li><input type="radio" value="Removed" name="Foo" />Removed</li> 
     <li><input type="radio" value="Updated" name="Foo" />Updated</li> 
    </ul> 
    <a href="" >Click here</a> 
    </body> 
</html> 

當你點擊鏈接時,所需的單選按鈕被選中。重要的一行是設置checked屬性的行。

+0

爲什麼attributeEndsWith選擇器(名稱$)而不是僅僅是attributeEquals? 對於OP - 請注意,屬性前面的@已被棄用。 – 2008-10-01 03:16:06

+0

@MarkBrackett - 它是從我的一些類似的代碼中解脫出來的,它有很多類似的無編號列表組,我用一個語句做了很多事情。 我複製了代碼,但沒有編輯該位,所以我現在就改變它 - 感謝提醒。 – paxdiablo 2008-10-01 03:32:50

13

我在對付類似這樣的牆上打我的頭,只是想指出,在jQuery 1.3中,接受的答案中使用的語法是唯一可行的語法。提問者對錶達式使用@語法,這在jQuery中完全不起作用。希望這有助於在未來的人通過谷歌= P過這個問題來

需要明確的是,你必須使用

jQuery('input[name=field1][val=checked]') 

,而不是

jQuery('input[@name=field1][@val=checked]')