2011-02-11 17 views
10

mam:jQuery selektor wartość

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

danej zmiennej X, który zawiera wartość (w tym przypadku zarówno A 1, 2 lub 3), to w jaki sposób mogę ukryć przycisk odpowiadający wartości X?

Chcę powiedzieć coś takiego:

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

znaczenie: "Przycisk, którego wartość wynosi x, ukryć".

Odpowiedz

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

Zrobiłbyś że wnętrze rzeczywistej selektora:

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

Mogę się mylić, ale czy nie byłoby to "wartością", ponieważ jest to skrót do uzyskania dostępu do atrybutów tagu? –

+0

Whoops. Pojemność myślowa jest trochę niska ... – Blender

+0

Hej, moja odpowiedź w magiczny sposób się poprawiła;) – Blender

1

Wymagałoby to złączenie X w XPath, ale nie mogę myśleć inaczej teraz.

$ (przycisk [wartość = "1"]). Hide();

EDIT: @ usunięte, najwyraźniej przestarzałe, podobnie jak ja :)

+1

'@' zostało usunięte po jQuery 1.2.6. ; o) – user113716

7

Możesz napisać własny selektor niestandardowego (ja po prostu czułem ktoś powinien o tym wspomnieć). Mógłby wyglądać następująco:

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

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

Nawet nie trzeba ręcznie przypisać wartości do przycisków:

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

zrobi fou Ciebie. Teraz masz już policzone wartości swoich przycisków. Ale nieważne, (! Nawet nie potrzebują wartości) można ukryć „kliknięciu tego przycisku” wykonując:

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

Dodałem trochę animacji. Lub połączyć oba! CIAO :)