Jquery - 即使函数之前未运行,也运行函数。

Jquery - 即使函数之前未运行,也运行函数。

问题描述:

这是toggle()函数中的一个片段。我有一个标题,点击时,使下面的标题向下滑动创建点击标题内容淡入的空间。Jquery - 即使函数之前未运行,也运行函数。

有工作正常,但我有问题,在堆栈底部的标题。在它下面没有一个标题向下移动,所以下面的内容淡入淡出的函数不会触发。

我想保持标题的一般结构滑下来,然后在淡入功能被激发。

$(currentHeader).next('li.header') 
     .animate({ marginTop: itemHeight + 15 }, 1000, function() 
     { 
      $(this).prev('ul#work-headers li').find('ul').fadeIn(500); 
     }); 

任何帮助将不胜感激。

我会说有2个解决方案,以这样的:

的快速和肮脏的:

添加一个空LI标签:

<li class="header" style="display:none;"></li> 

或更改代码的代码添加在每个UL对之后保证金为UL或某个div。

+0

这种肮脏的解决方案,但它的工作。我刚刚创建了一个标题,只显示一个标题,而不是将其留空,只需键入网站名称即可。感谢您的简单解决方案! –

+0

嘿嘿好...有时很高兴有一个快速修复,然后继续与更重要的/有趣的东西:) – Holger

我不能真的测试这个,所以你必须找出扭结,但基本的想法是封装你想要的逻辑,以便它可以与不会触发的动画分开调用一些案例。

var fadeIn= function(content) { 
        $(content).find('ul').fadeIn(500); 
       } 
var next = $(currentHeader).next('li.header'); 

if(next.length>0) { 
    next.animate({ marginTop: itemHeight + 15 }, 1000, function() 
     { 
      fadeIn($(this).prev('ul#work-headers li')); 
     }); 
} 
else { 
    fadeIn($(this).find('ul#work-headers li')); 
} 

编辑 - 如@霍尔格的想法更是诚实的

+0

没有测试过这一点,但使用长度属性是我将如何接近这一点。感谢您的尝试,如果我有时间,我会尝试一下。 –