Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
高级jQuery查找_Jquery_Show Hide - Fatal编程技术网

高级jQuery查找

高级jQuery查找,jquery,show-hide,Jquery,Show Hide,我得到了以下重复语法,我想保留所有后面至少有一个not hidden div的,但删除其余孤立的: 不幸的是,它不会隐藏任何,我也不知道为什么,尽管我怀疑:hidden属性就是问题所在应该注意,在我的真实代码中,隐藏的不是通过“display:none”隐藏的,而是通过使用jQuerys.hide() 希望有人能帮忙。我能想到的最干净的解决方案: $('h1').each(function(){ if ( $(this).nextUntil('h1').not(':hidden').leng

我得到了以下重复语法,我想保留所有后面至少有一个not hidden div的
,但删除其余孤立的

不幸的是,它不会隐藏任何
,我也不知道为什么,尽管我怀疑
:hidden
属性就是问题所在应该注意,在我的真实代码中,隐藏的
不是通过“display:none”隐藏的,而是通过使用jQuerys
.hide()


希望有人能帮忙。

我能想到的最干净的解决方案:

$('h1').each(function(){
  if ( $(this).nextUntil('h1').not(':hidden').length == 0 ) $(this).hide();
});​

这里的示例:

我能想到的最干净的解决方案:

$('h1').each(function(){
  if ( $(this).nextUntil('h1').not(':hidden').length == 0 ) $(this).hide();
});​

这里的例子:

这就是你想要的吗

对于每个H1,在下一个H1之前找到所有元素,如果它们都隐藏,则隐藏此H1

$('h1').each(function() {
var elems = $(this).nextUntil('h1');
var elemsHidden = false;
for (var i = 0; i < elems.length; i++) {
    if ($(elems[i]).is(':hidden')) {
        elemsHidden = true;
    } else {
        elemsHidden = false;
    }
}

if (elemsHidden) {
    $(this).hide();
}

});​
JSFiddle

这就是你想要的吗

对于每个H1,在下一个H1之前找到所有元素,如果它们都隐藏,则隐藏此H1

$('h1').each(function() {
var elems = $(this).nextUntil('h1');
var elemsHidden = false;
for (var i = 0; i < elems.length; i++) {
    if ($(elems[i]).is(':hidden')) {
        elemsHidden = true;
    } else {
        elemsHidden = false;
    }
}

if (elemsHidden) {
    $(this).hide();
}

});​
JSFiddle

您只需选择隐藏的
div
,然后查找上一个
h1
。它减少了代码并保持简单

$('div:hidden').prev('h1').hide();

jshiddle在这里

您只需选择隐藏的
div
,然后找到prev
h1
。它减少了代码并保持简单

$('div:hidden').prev('h1').hide();


jshiddle这里

OP不想隐藏第二个H1Oh。。第一句话很让人困惑。希望删除所有。但不是真的把所有的都去掉吗?哈哈,很抱歉弄糊涂了,我不知道该如何解释它的不同之处。你不想隐藏第二个H1哦。。第一句话很让人困惑。希望删除所有。但不是真的全部删除吗?哈哈,很抱歉弄糊涂了,我不知道如何解释它。在我的实际代码中,有时在
h1
之后不仅有2个
div
,而且最多有10个,所以对于所有
next()
。你能弄清楚你到底在找什么吗@DanSurfriderWell如果把我所有的代码都发布在这里,那就太过分了,我会尝试在示例代码中加入更多的变体。基本上,我正在隐藏
div
内容,因为这会导致孤立的h1,我也想删除它…也不起作用,如果至少有一个隐藏,它会删除
h1
,但如果至少有一个可见,我想保留它。所以我把它倒过来一点,现在它工作了!当你把我推向正确的方向时,如果你愿意,把它作为你的答案贴出来!在我的acual代码中,有时在
h1
之后不仅有2个
div
,而且最多有10个,所以这可能对所有
next()
有点过分了。你能澄清一下你到底在找什么@dansurfrider吗?如果把我所有的代码都发布在这里,那就太过分了,我会尝试在示例代码中加入更多的变体。基本上,我正在隐藏
div
内容,因为这会导致孤立的h1,我也想删除它…也不起作用,如果至少有一个隐藏,它会删除
h1
,但如果至少有一个可见,我想保留它。所以我把它倒过来一点,现在它工作了!当你把我推向正确的方向时,如果你愿意,把它作为你的答案贴出来!这将以某种方式删除每个h1!太多的圈圈不合我的口味了。我找到了我与Michadelli best合作提出的解决方案。谢谢你的努力,虽然这会以某种方式删除每个h1!太多的圈圈不合我的口味了。我找到了我与Michadelli best合作提出的解决方案。谢谢你的努力
$('div:hidden').prev('h1').hide();