2013-07-31 101 views
6
$(document).ready(function() { 
    $("#newrecord tr:odd").addClass("odd"); 
    $("#newrecord tr:not(.odd)").find("li").hide(); 
    $("#newrecord tr:not(.odd)").hide(); 
    $("#newrecord tr:first-child").show(); 

    $("#newrecord tr.odd").click(function() { 
     $("#newrecord tr:not(.odd)").show(); 
     $(this).next("tr").find("li").slideToggle("slow","swing"); 
    }); 
}); 

下面先隐藏所有偶数行,当我们点击奇数行时,它显示偶数行和幻灯片下载每行的li内容。当我再次点击li标签时,我需要帮助,因为我需要它,但它也应该隐藏该行。即应该在上移后调用行上的隐藏功能。slidetoggle完成后的通话功能

+0

如果没有jQuery,_poor_程序员会做什么? _(使用zepto?)_ –

+0

通过查看官方的jQuery文档,您可以找到您的答案http://api.jquery.com/slideToggle/ –

回答

9
$(document).ready(function() { 
    $("#newrecord tr:odd").addClass("odd"); 
    $("#newrecord tr:not(.odd)").find("li").hide(); 
    $("#newrecord tr:not(.odd)").hide(); 
    $("#newrecord tr:first-child").show(); 

    $("#newrecord tr.odd").click(function() { 
     $("#newrecord tr:not(.odd)").show(); 
     $(this).next("tr").find("li").slideToggle("slow","swing", function(){ 
      //What to do on toggle compelte... 
     }); 
    }); 
}); 
+1

,但是每次滑下时都会调用该函数,我希望函数只在滑动时才被调用 –

+0

优秀的答案;正是我需要的。要添加的一点小事是“摆动”是默认的,可能是可选的。 – Catto

0

请看看下面的代码

$(this).next("tr").find("li").slideToggle("slow","swing", function(){ 
    // here you code after toggle complete 
}); 
+1

但函数每次滑落时都会调用,我希望只在函数滑过时调用函数 –

1

Lwyrn是正确的,加入第三个参数的slideToggle通话将做到这一点。为了获得更多的控制权限,你可以传递一个普通的对象和所有你希望作为参数的选项(例如.slideToggle(options))。你可以阅读更多关于这些选项可以做些什么:http://api.jquery.com/slideToggle/#slideToggle-options

我发现当我不想让动画排队时传递对象很有用(如果用户快速点击50次,动画将堆叠并且不停地切换一段时间 - 不受欢迎的行为)。

+1

,但函数每次滑下时调用函数,我只希望在函数滑过时调用函数 –

+0

看到。我认为你应该将slideToggle调用分成动画的两部分,slideUp和slideDown。然后在一个if语句中,根据css('visibility')==='hidden'的真值确定使用哪个动画函数。然后,您可以像以前一样将回调函数传递给slideDown。请参阅http://api.jquery.com/slideDown/ – TorranceScott