2008-10-01 33 views
45

Tengo el siguiente marcado y quiero marcar el botón de opción All marcado.jQuery coincide con varios atributos

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

me gustaría hacer coincidir a través de atributos, pero necesito hacer coincidir en 2 atributos, @name='Foo' y @value='All'.

Algo como esto:

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

Puede alguien mostrar cómo se puede hacer esto?

+1

La sintaxis XPath para los argumentos (usando " @ ") ha quedado obsoleto en jQuery 1.2.6 y eliminado de jQuery 1.3. La sintaxis de CSS ahora es la única sintaxis disponible ("[attribute = value]") –

Respuesta

67

El archivo HTML siguiente muestra cómo se puede hacer esto:

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

Al hacer clic en el enlace, se selecciona el botón de radio deseada. La línea importante es la que establece el atributo checked.

+0

¿Por qué el attributeEndsWith selector (nombre $) en lugar de simplemente attributeEquals? Para el OP: tenga en cuenta que @ delante de los atributos ha quedado en desuso. –

+0

@MarkBrackett: se eliminó de un código mío similar que tenía muchos grupos de listas no numeradas similares y yo había hecho mucho con una afirmación. Copié el código pero no edité ese bit, así que lo cambiaré ahora, gracias por el aviso. – paxdiablo

13

me latía la cabeza contra una pared similar a esto y sólo quiero señalar que en jQuery 1.3 la sintaxis utilizada en la respuesta aceptada es únicamente la sintaxis que va a funcionar. El interlocutor usa la sintaxis @ para la expresión que no funciona en absoluto en jQuery. Espero que esto ayuda a que el tipo de al lado a venir a través de esta pregunta a través de Google = p

Para que quede claro, usted tiene que utilizar

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

y no

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

Gracias - el @ tropezará con un xpather incauto como yo. – StuartLC

Cuestiones relacionadas