2011-02-11 54 views
10

我有:jQuery的值選擇

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

鑑於包含一個值(在這種情況下,或者A 1,A 2或A 3)變量X,然後如何隱藏對應於值的按鈕X?

我想說的是這樣的:

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

含義: 「按鈕,其值爲x,隱藏」。

回答

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

你會做實際選擇的裏面:

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

我可能是錯的,但不會是「價值」,因爲這是訪問標籤屬性的快捷方式嗎? –

+0

哎呀。思維能力有點低... – Blender

+0

嘿,我的答案奇蹟般地修復了自己;) – Blender

1

這就需要串聯x轉換成一個XPath,但我現在不能想的另一種方式。

$(button [value ='1'])。hide();

編輯:刪除@,顯然過時了,就像我自己:)

+1

在@ jQuery 1.2.6之後,'@'被拋棄了。 ; O) – user113716

7

您可以編寫自己的自定義選擇(我只是覺得應該有人提到它)。可能看起來像:

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

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

你甚至不用手動分配值按鈕:

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

會做缶你。現在你已經計算了你的按鈕值。 但沒關係,(!你甚至不需要值),您可以隱藏通過做「這個點擊按鈕」:

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

我平添了幾分動畫。 或者兩者兼而有之! CIAO :)