2008-10-01 4 views
45

Ich habe die folgende Markup, und ich möchte die All Optionsfeld aktiviert.jQuery mehrere Attribute übereinstimmen

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

Ich möchte über Attribut übereinstimmen, aber ich muss auf zwei Attribute passen, @name='Foo' und @value='All'.

Etwas wie folgt aus:

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

Kann jemand zeigen, wie dies getan werden kann?

+1

Die XPath-Syntax für Argumente (mit " @ ") wurde in jQuery 1.2.6 veraltet und von jQuery 1.3 entfernt. Die CSS-Syntax ist jetzt die einzige verfügbare Syntax ("[attribute = value]") –

Antwort

67

Die folgende HTML-Datei zeigt, wie Sie dies tun können:

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

Wenn Sie auf den Link klicken, wird die gewünschte Optionsfeld ausgewählt ist. Die wichtige Zeile ist diejenige, die das Attribut checked setzt.

+0

Warum der AttributEndSWith-Selektor (name $) statt nur attributeEquals? Zum OP - beachten Sie, dass @ vor Attributen veraltet ist. –

+0

@MarkBrackett - es wurde von einem ähnlichen Code von mir entfernt, der viele ähnlich benannte Gruppen mit nicht nummerierten Listen hatte, und ich hatte das Ganze mit einer Aussage gemacht. Ich habe den Code kopiert, aber dieses Bit nicht bearbeitet, also werde ich es jetzt ändern - danke für das Heads-Up. – paxdiablo

13

Ich schlug meinen Kopf gegen eine Wand ähnlich und möchte nur darauf hinweisen, dass in jQuery 1.3 die Syntax in der angenommenen Antwort die einzige Syntax ist, die funktioniert. Der Fragesteller verwendet die @ -Syntax für den Ausdruck, der in jQuery überhaupt nicht funktioniert. Hoffentlich dies der nächste Kerl hilft über diese Frage über Google = p zu kommen

Um klar zu sein, haben Sie

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

zu verwenden und nicht

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

Danke - das @ wird einen unvorsichtigen Xpather stolpern wie ich. – StuartLC