2008-10-01 15 views
45

Mam następujący znacznik i chcę zaznaczyć przycisk radiowy All.jQuery pasuje do wielu atrybutów

<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> 

chciałbym aby dopasować za pomocą atrybutu, ale trzeba dopasować 2 atrybutów, @name='Foo' i @value='All'.

coś takiego:

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

Czy ktoś może pokazać w jaki sposób można to zrobić?

+1

składni XPath dla argumentów (za pomocą " @ ") został przestarzały w jQuery 1.2.6 i usunięty z jQuery 1.3. Składnia CSS jest teraz jedyną dostępną składnią ("[atrybut = wartość]") –

Odpowiedz

67

Następujący plik HTML pokazuje w jaki sposób można to zrobić:

<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> 

Po kliknięciu na link, zostanie wybrany żądany przycisk radiowy. Ważną linią jest ta, która ustawia atrybut checked.

+0

Dlaczego selektor attributeEndsWith (name $) zamiast tylko attributeEquals? Do OP - zauważ, że @ przed atrybutami jest przestarzałe. –

+0

@MarkBrackett - został usunięty z jakiegoś podobnego kodu, który miał wiele podobnie nazwanych grup nienumerowanych i wiele zrobiłem jednym zdaniem. Skopiowałem kod, ale nie edytowałem tego fragmentu, więc zmienię go teraz - dzięki za heads-up. – paxdiablo

13

Uderzyłem głową o ścianę podobną do tej i chciałbym tylko wskazać, że w jQuery 1.3 składnia użyta w zaakceptowanej odpowiedzi jest TYLKO składnią, która zadziała. Pytający używa składni @ do wyrażenia, które w ogóle nie działa w jQuery. Mam nadzieję, że to pomaga następny facet natknąć tej kwestii poprzez Google = p

Żeby było jasne, trzeba użyć

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

a nie

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

Dzięki - @ wyruszy do nieostrożnego xpather'a jak ja. – StuartLC

Powiązane problemy