web-dev-qa-db-fra.com

jQuery correspond à plusieurs attributs

J'ai le balisage suivant et je veux faire cocher le bouton radio All.

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

Je voudrais faire correspondre via un attribut, mais je dois faire correspondre deux attributs, @name='Foo' et @value='All'.

Quelque chose comme ça:

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

Quelqu'un peut-il montrer comment cela peut être fait?

45
zadam

Le fichier HTML suivant montre comment procéder:

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

Lorsque vous cliquez sur le lien, le bouton radio souhaité est sélectionné. La ligne importante est celle qui définit l'attribut checked.

68
paxdiablo

Je me battais la tête contre un mur similaire à celui-ci et je veux juste souligner que dans jQuery 1.3 la syntaxe utilisée dans la réponse acceptée est la SEULE syntaxe qui fonctionnera. L'interrogateur utilise la syntaxe @ pour l'expression qui ne fonctionne pas du tout dans jQuery. J'espère que cela aidera le prochain gars à trouver cette question via Google = p

Pour être clair, vous devez utiliser

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

et pas

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