2016-12-07 59 views
-1

嗯,我有这个问题,我想过滤使用如何筛选被其他元素隐藏的“可见”jQuery元素?

$controls = $(document).find('.control'); 
$controls.filter('[required]:visible'); 

这个假设将返回形式的控制选择元件(例如窗体的控件)是可见的和必需的。

问题是,当我有隐藏的一组元素,但元素是可见的,例如:

<div class="group" style="display:none"> 
    <div class="control" id="control1" required> 
     <input type="text" /> 
    </div> 
    <div class="control" id="control2" required> 
     <input type="text" /> 
    </div> 
... 
    <div class="control" id="control3"> 
     <input type="text" /> 
    </div> 
</div> 

当我过滤控制,我没有得到任何东西,因为“团”全部隐藏。

我该如何解决? (我知道如何,但问题是关于'[required]:visible'的简单性,我想要一个像这样的答案,用选择器)。

谢谢。

+1

这不是一个问题,当父母被隐藏时,孩子也被隐藏是正常的。如果你想选择所有的控件(包含隐藏),你应该改变你的选择器('[required = required]') – ylerjen

回答

0

为什么不隐藏元素,而不是隐藏组?或者如果您对隐藏元素的值感兴趣,只需删除:visible过滤器。

2

您可以使用此代码段为您的操作:

$controls = $(document).find('.control'); 
 
console.log($controls.filter(function(){ 
 
\t return $(this).css('display') == 'block' && $(this).attr('required') == 'required'; 
 
}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="group" style="display:none"> 
 
    <div class="control" id="control1" required> 
 
     <input type="text" /> 
 
    </div> 
 
    <div class="control" id="control2" required> 
 
     <input type="text" /> 
 
    </div> 
 
    <div class="control" id="control3"> 
 
     <input type="text" /> 
 
    </div> 
 
</div>

0

如果你可以分享工作小提琴,甚至一个片段,我可以有较好的帮助你。但生病仍然尽我所能来回答你的问题。

首先,因为你的父母是隐藏你的孩子将被隐藏,以及(正常行为)

其次,刚刚尝试做这个

var elem = $(element), 
controlElem = elem.find(".control"), 
if(controlElem.hasClass("required")){ 
success code goes here. 

而且不要忘记你的选择更改为(“[需要=需要]')

希望这会有所帮助。

相关问题