jquery each函数的用法? 下面的是循环LI,当前的LI下滑显示。同时想让其他的LI收起怎么做?

2024-12-02 17:15:06
推荐回答(4个)
回答1:

这其实不需要用到循环,而且你将鼠标经过事件放到循环里,思路的出发点就已经错了,你可以这么写,给你个思路.

默认所有li的内容隐藏;


鼠标经过LI时,该li的内容显示.当鼠标经过下一个li的时候,正在显示的li隐藏,鼠标所在的li显示.当鼠标移除时,所有可见的li隐藏;


关键的jquery方法:visible 匹配可见的元素;



根据你问题的代码,我大致猜测可以这么写:

<script>
$("li.mainlevel").hover(function(){
      $hideUl=$(this).parent().find('ul:visible').slideUp('1000');
     /*其实我觉得,上面这行代码可以省略掉,直接就是鼠标经过时当前显示;鼠标移出时,刚刚的隐藏,这样,无论你鼠标过到哪个,都是只显示一个;*/
     $(this).find('ul').slideDown('1000');
},function(){
      $(this).find('ul').slideUp('1000');
})
</script>

回答2:

$("li.mainlevel").each(function(i){
$(this).mouseover(function(){
$("li.mainlevel").slideUp("fast");//先全部收起
$(this).find('ul').slideDown("1000");//展开当前的
});
});

回答3:

$("li.mainlevel").hover(function(){
$("li.mainlevel").slideUp();
$(this).slideDown();
})

回答4:

$(this).parent().find("div:visible").slideUp("fast");
$(this).find(".o2").slideDown("1000");

先把已经显示的slideup掉,再把当前的slideDown