2011-02-11 8 views
10

que tengo:jQuery selector valor

<button class="Delete" value="1">Delete</button> 
<button class="Delete" value="2">Delete</button> 
<button class="Delete" value="3">Delete</button> 

Dada variable X que contiene un valor (en este caso, ya sea un 1, un 2 o un 3), a continuación, ¿cómo ocultar el botón correspondiente al valor en ¿X?

quiero decir algo como:

$('button').val(x).hide(); 

Significado: "El botón cuyo valor es x, ocultar".

Respuesta

34
$('button[value="' + x + '"]').hide(); 
6

Harías que en el interior del selector real:

$('button[value="foo"]').hide(); 
+0

Puedo estar equivocado, pero ¿no sería "valioso", ya que este es un acceso directo para acceder a los atributos de la etiqueta? –

+0

Whoops. La capacidad de pensamiento es un poco baja ... – Blender

+0

Oye, mi respuesta se solucionó mágicamente;) – Blender

1

Esto requeriría la concatenación de x en un XPath, pero no puedo pensar en otra manera en este momento.

$ (button [value = '1']). Hide();

EDIT: @ eliminado, al parecer obsoleta, tanto como yo :)

+1

El '@' se eliminó después de jQuery 1.2.6. ; o) – user113716

7

Usted puede escribir su propio selector personalizado (me sentí alguien debe mencionarlo). Podría verse como:

(function($) { 
    $.extend($.expr[':'], { 
     val: function(elem, i, attr) { 
      return elem.value === attr[3]; 
     } 
    }); 
}(jQuery)); 

$('button:val(2)').hide(); 
0

Ni siquiera tiene que asignar manualmente los valores a los botones:

var i = 0; $('.Delete').attr('value', function() {i++; return ''+i;}); 

lo hará fou usted. Ahora tiene los valores de sus botones contados. Pero no importa, (! Que ni siquiera necesita valores) Puede ocultar 'ESTE botón hecho clic' haciendo:

$(".Delete").click(function() { 
$(this).html("DELETED!").delay(900).slideUp(600).hide(); 
}); 

He añadido un poco de animación. ¡O combine ambos! CIAO :)