2012-10-02 53 views
1

我有我用来显示之间切换是/否“的政策”的div隐藏元素

<form> 
<input type="radio" id="Policy0" name="Policy" value="0" onclick="filterHotel();"><label for="Policy0">All</label> 
</form> 
<script type="application/javascript"> 
var Policy = $('input:radio[name=Policy]:checked').val() 
if (Policy == 0) { 
$('form [data-policy="0"]').toggle();    
} 
</script> 

<div id="24448" data-policy="0">Data here</div> 
<div id="24448" data-policy="1">Data here</div> 

通过上面我的代码可以成功显示/按钮隐藏正确的div ,但我的问题是我不想将我的输入封装在表单元素中。有没有一种方法可以根据属性中的值进行引用?我试过$('input[attr=data-policy][value="0"]').toggle();但这似乎并不奏效。我确信我错过了一些简单的东西,有人能指引我朝着正确的方向吗?

编辑:$('input[data-policy="0"]').toggle();不工作,我没有得到一个错误,但它并不能掩盖一个div的​​属性我也试过data-policy=0没有运气

回答

9

这应该足够了:

$('[data-policy="0"]').toggle(); 

如需进一步信息,您可以在Attribute Equals Selector [name="value"]文档

+0

我以前试过,但这也行不通。我正在使用jQuery 1.8.1,但将我的版本更改为1.8.2不会影响任何内容。我不确定在哪里可以找到错误。 –

+0

我回顾了你的问题。它不起作用,因为标签不是“输入”,而是“div”。更新后的答案将切换任何具有data-policy = 0的标签 –

+0

谢谢!这是完美的。 –

0

正确的CSS看看(因此,jQuery的)选择的是[attribute=value],所以,选择具有项目data-policy="0"你应该使用[data-policy=0]

其他可用的选择是 “具有属性”:[attribute], “载”:[attribute*=value], “打头”:[attribute^=value]和 “结尾”:[attribute$=value]

0

ID是唯一的,那么为什么不使用ID?

var Policy = $('#Policy0:checked').val(); 
$('#Policy0').toggle(Policy===0); 
+0

我将有多个需要应用的过滤器,并且我认为考虑到所有单独的过滤器,这种方式会更容易。 (为了简单,我没有列出我的问题) –