2011-02-11 55 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 :)