45 votes

jQuery correspond à plusieurs attributs

J'ai le balisage suivant et je souhaite activer le bouton radio "Tous" coché.

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

J'aimerais le faire via une correspondance d'attribut, mais je dois apparier deux attributs, @name='Foo' et aussi @value='All'

Quelque chose comme ça (même si ça ne marche pas):

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

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

68voto

paxdiablo Points 341644

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 .

13voto

easel Points 2466

Je frappais ma tête contre un mur semblable à celui-ci et je voulais simplement souligner que dans jQuery 1.3, la syntaxe utilisée dans la réponse acceptée est la syntaxe SEULE qui fonctionnera. Le questionneur utilise la syntaxe @ pour l'expression qui ne fonctionne pas du tout dans jQuery. Espérons que cela aide 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]')
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X