2017-06-16 73 views
0

如何忽略隐藏div中的元素?我有一个可见的元素,并且隐藏在一个div一些元素形式...JQuery忽略隐藏div中的元素值

<form id="my-form"> 
    <input name="split_values[]" class="split"> 
    <input name="split_values[]" class="split"> 
    <input name="split_values[]" class="split"> 
    <div class="hidden-div"> 
    <input name="split_values[]" class="split"> 
    </div> 
</form> 

我通过审定元素截枝...

$('#my-form *').filter(':input').each(function(){ 
    // my validation here 
}); 

但我想忽略任何在隐藏的div中的值。所以我只想看到前三个元素的验证,而不是隐藏div中的第四个元素。由于这些元素是动态生成的,所以我不能给他们ID。

在此先感谢。

+4

'如果(!$(本).parent()hasClass( “隐藏的div”))...'你也可以只针对直接后裔:'$( “#my-form> input”)' –

回答

3

你可以使用:visible伪选择过滤掉隐藏input -fields:

$('#my-form *').filter(':input:visible').each(function() { 
    // my validation here 
}); 
-1

应用一个不与DIV类的选择器功能

$('#my-form *').not('.hidden-div').filter(':input').each(function(){ 
    // my validation here 
}); 
+0

该类位于父元素中。 –

+0

将其更改为不在表格上 –

+0

仍然错误。重读OP的HTML。 –

1

如果你确信你的结构不会改变,你可以使用

$('#my-form>input') 

至极应该得到仅是输入该表格的直接子女,不包括divs。

$('#my-form>:not(.hidden-div)') 

这会碰到一些类隐藏DIV的不是我的,形式的所有儿童

0
$('#my-form *').filter(':input').each(function(){ 
if(!$(this.parentElement).hasClass('hidden-div')){ 
    console.log(this); 
} 
}); 
+1

你能解释一下你的答案吗? – hardkoded

0

我相信在工作的例子,在这里。

console.log($('#my-form .split:not(.hidden-div .split)').length);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="my-form"> 
 
<input name="split_values[]" class="split"> 
 
<input name="split_values[]" class="split"> 
 
<input name="split_values[]" class="split"> 
 
<div class="hidden-div"> 
 
<input name="split_values[]" class="split"> 
 
</div> 
 
</form>