选择表单中的所有元素,除父div包含display:none

时间:2016-01-12 16:04:09

标签: javascript jquery html

我试图选择表单中的元素,除了父div包含display:none

$('*[data-val-required="required"]') 

这里我可以选择所有元素以及父div中的隐藏元素,如

<div class="form-group" style=" display: none; " >
<div  class="col-sm-3 control-label">
    lable
</div>
<div class="col-sm-6">
<select class="form-control"  data-val-required="This field is required" >
</div>
<div class="col-sm-3"></div>

如何排除这些元素

4 个答案:

答案 0 :(得分:2)

您可以定位.form-group并使用:visible伪选择器:

$('.form-group:visible *[data-val-required="required"]') 

答案 1 :(得分:2)

可以使用:hidden选择器与not()相结合来排除它们

$('*[data-val-required="required"]').not(':hidden') 

当父母被隐藏时,它的后代也是

参考:hidden selector

答案 2 :(得分:1)

最简单的方法是使用父类上的类:

$('.form-group:visible *[data-val-required="required"]')

但是:visible伪选择器返回true visibility:hiddenopacity:0

https://api.jquery.com/visible-selector/

答案 3 :(得分:0)

如果您只有特定元素,则不想选择。然后使用jQuery中的not()选择器。

FX。 $( '* [数据-VAL-需要= “必需的”]')。不( '控制标签')

请参阅文档:http://api.jquery.com/not/