2009-06-30 11 views
30

Tengo el siguiente código HTML generado por un repetidor ASP.NET:¿Cómo puedo seleccionar un campo oculto por valor?

<table> 
    <tr> 
    <td><input type="hidden" name="ItemId" id="ItemId" value="3" /></td> 
    <td>Terry</td> 
    <td>Deleted</td> 
    <td>Low</td> 
    <td>Jun 21</td> 
    </tr> 
    <!-- rows repeat --> 
</table> 

¿Cómo selecciono un campo oculto en particular por valor, de modo que pueda entonces manipular las columnas junto a él?

+2

¿Por qué no hacer la vida más fácil para usted y para obtener el campo de identificación? – RichardOD

+0

si no lo obtiene por identificación, entonces alguien puede venir, agregar una entrada a su página y si ambos tienen el mismo valor, entonces puede obtener un error; hacerlo por ID parece mucho más seguro – jcollum

+0

@Richard - Dentro de un repetidor de ASP.NET cada campo oculto obtendrá una ID diferente (como debería), p. ctl100_ItemId, ctl101_ItemId, etc. Por lo general, nos dirigimos a estos ID con $ ('id $ = ItemId') (termina con), pero esto no funcionará bien aquí. – Kobi

Respuesta

83

Usando jQuery Selectors, puede orientar su elemento por un determinado atributo que coincida con el valor deseado:

$('input[value="Whatever"]'); 

De esta manera usted está apuntando a un elemento input, por el atributo value que es igual al valor deseado.

EDITAR 05/14/2013: De acuerdo con una respuesta a continuación, esto ya no funciona a partir de jQuery 1.9.

+4

Solo quería mencionar, pero puede haber problemas de compatibilidad entre navegadores al usar comillas alrededor del valor que está consultando. $ ('input [value = Whatever]') parece ser la forma aceptada de hacer este tipo de consultas. –

+2

Como lo señaló Glyn Jones, esto no funciona con jQuery 1.9+. Vea su respuesta a continuación para la alternativa. –

+0

Técnicamente, si quiere hacer coincidir el atributo 'value' *, entonces esta respuesta sigue siendo la correcta. Por supuesto, como a jQuery le encanta eliminar las especificaciones de los selectores para sus propias necesidades, los selectores de atributos no siempre funcionaron de esa manera. En 1.9+ ahora funcionan de acuerdo con las especificaciones, lo que significa que * solo * coincidirá con el atributo 'value' declarado en el marcado, y * no * con la propiedad' .value' DOM. – BoltClock

8
$('input:hidden[value=\'3\']'); 
10

Nota: Desde jQuery 1.9 la entrada [value = "banana"] selector ya no es válida, ya que el 'valor' de la entrada no es técnicamente un atributo. Necesita utilizar el (.filter) mucho más difícil de leer

P. ej.

$("input").filter(function() { 
    return this.value === "banana"; 
}); 

Consulte también: jQuery 1.9.1 property selector

+0

Si está utilizando jQuery 1.9+ esta es la respuesta correcta. –

+0

No, sigue siendo un selector válido. Simplemente coincide correctamente de acuerdo con el atributo 'value' * en comparación con la propiedad' .value' * * ahora. – BoltClock

Cuestiones relacionadas