Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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显示/隐藏div和计数器_Jquery_Html_List_Loops - Fatal编程技术网

jquery显示/隐藏div和计数器

jquery显示/隐藏div和计数器,jquery,html,list,loops,Jquery,Html,List,Loops,我有一个随机的div数(最少1个,最多10个) 这将删除单击的div,导致下面的所有div向上移动一个。这是我想要的效果 然而,我需要一些逻辑 如果我有少于5个div,关闭设备应该被禁用。如果我有5个以上的div,那么当一个div“关闭”时,我希望下一个“隐藏”div变为可见 如果需要,我可以将ID添加到每个DIV,如“foo1”、“foo2”等ID。类似的操作应该可以: $("#container .foo:gt(4)").hide(); $("#container").delegate("

我有一个随机的div数(最少1个,最多10个)

这将删除单击的div,导致下面的所有div向上移动一个。这是我想要的效果

然而,我需要一些逻辑

如果我有少于5个div,关闭设备应该被禁用。如果我有5个以上的div,那么当一个div“关闭”时,我希望下一个“隐藏”div变为可见


如果需要,我可以将ID添加到每个DIV,如“foo1”、“foo2”等ID。

类似的操作应该可以:

$("#container .foo:gt(4)").hide();

$("#container").delegate(".foo", "click", function() {
    if(!$("#container .foo:hidden").length) return;
    $(this).fadeOut('slow', function() { 
        $(this).siblings(":hidden:first").fadeIn()
               .end().remove();
    });
});

。这样做的目的是使用(基于0的)选择器隐藏所有过去的5。然后,我们使用的是效率(尽管a也可以)。如果没有更多的隐藏,就没有效果。如果有更多的隐藏,则淡出我们单击的一个,在淡出结束时显示一个,以及我们完全淡出的一个。

如果有一千个结果,您将执行该函数一千次。将:gt(4)与直接隐藏()结合使用如何?它的方式更快,但我们没有,我们有最多10作为OP声明-我们有能力修改基于每个索引的代码。。。不管怎样,尼克·克雷弗的解决方案很好。我只想指出,使用
slideDown
slideUp
在您使用
fadeOut/In
的地方使用
slideout/In
会产生一个很好的效果,而且不那么急促。听从建议,更漂亮!还是丑陋的css。foo+.foo+.foo+.foo+.foo+.foo{display:none;}前面有5个以上的.foo同级将被隐藏。如果你移除了它。它没有fadeIn支持though@DoXicK-我想你忽略了
.end()
调用,我要删除的不是兄弟姐妹中的淡出,而是
$(此)
:)
$('#container div.foo').click(function() {
  if ($(this).index() >= 5) ...; //etc
}
$('.foo').each(
   function(index,element) {
       if(index>5) $(element).hide();
   }
)
$("#container .foo:gt(4)").hide();

$("#container").delegate(".foo", "click", function() {
    if(!$("#container .foo:hidden").length) return;
    $(this).fadeOut('slow', function() { 
        $(this).siblings(":hidden:first").fadeIn()
               .end().remove();
    });
});
$('#container div.foo').click(function() {
  if ($(this).index() >= 5) ...; //etc
}