Jquery 动画隐藏和显示

Posted

技术标签:

【中文标题】Jquery 动画隐藏和显示【英文标题】:Jquery animate hide and show 【发布时间】:2010-11-04 17:38:05 【问题描述】:

当我点击一个链接时,我希望同时发生两件事。我正在慢慢浏览 Jquery 文档,但还没有了解我需要什么。

这是我的site的链接

当我点击服务链接时,我希望 #slideshow div 隐藏,并用一个新的 div 替换它。

我曾尝试在单击服务链接时仅显示幻灯片动画,但它要么执行动画功能,要么转到链接的 html 页面,而不是两者。我将如何实现两者。

如果我只是在同一页面上隐藏和显示 div,或者我转到一个新的 html 页面,这并不重要。我只想拥有动画功能并在隐藏的同时更改内容。

这是我正在使用的 jquery 代码

$(document).ready(function()   
  $("a.home").toggle(
    function()
      $("#slideshow").animate( height: 'hide', opacity: 'hide' , 'slow');   
    ,
    function()
      $("#slideshow").animate( height: 'show', opacity: 'show' , 'slow');   
    
  );
);

$(document).ready(function()   
  $("a.services").toggle(
    function()
      $("#slideshow2").animate( height: 'show', opacity: 'show' , 'slow');
    ,
    function()
      $("#slideshow2").animate( height: 'hide', opacity: 'hide' , 'slow');
    
  );
);

home和services是两个链接,我希望services点击后隐藏#slideshowdiv,并显示slideshow2div,这将被隐藏然后替换第一个。

有相当多的 html,因此从链接中查看我的源代码可能会更容易。

【问题讨论】:

【参考方案1】:

已更新:此解决方案已根据 cmets 中的后续问题进行了更新。

您应该使用 callback method 的显示/隐藏方法。

$("a").click(function()

  /* Hide First Div */
  $("#div1").hide("slow", function()
    /* Replace First Div */
    $(this).replaceWith("<div>New Div!</div>");
  );

  /* Hide Second Div */
  $("#div2").hide("slow", function()
    /* Replace Second Div */
    $(this).replaceWith("<div>New Div!</div>");
  );

  /* If you wanted to sequence these events, and only
     hide/replace the second once the first has finished,
     you would take the second hide/replace code-block 
     and run it within the callback method of the first
     hide/replace codeblock. */

);

回调方法是 .show/.hide 函数的第二个参数。只要 .show/.hide 方法完成,它就会运行。因此,您可以关闭/打开您的盒子,然后在回调方法中立即运行一个事件。

【讨论】:

太好了,成功了。谢谢!只是一个简单的问题,我将如何隐藏两个 div,然后单击一下将它们替换为两个 div。从技术上讲,我让它工作,但它用相同的东西替换了两个 div,所以它重复了。我用当前的问题更新了我的网站。你能解释一下为什么,如果没有我在它下面使用的以前的代码,你的代码将无法工作。 解决方案已更新以演示如何隐藏两个 div,并用不同的 div 替换它们。 是的,现在我记得所有这些都在 jquery 文档中的教程中介绍过,但直到真正需要使用它时我才掌握这些东西。有没有办法像滑动一样为 .hide 设置动画,而不是全部进入左上角 只需将“hide”更改为“slideUp” - 如果您在文档中检查这两种效果,您会发现它们具有完全相同的足迹:method(speed, [callback]);意思是,要从隐藏更改为上滑,您所要做的就是更改方法的名称:) 就是这样。 你太棒了!最后两个问题,非常感谢。有没有办法为 replaceWith 设置动画,我正在使用 javascript 字体替换,wiki.github.com/sorccu/cufon/about 有没有办法让它应用于我替换它的 div,因为它们发生在它运行之后。

以上是关于Jquery 动画隐藏和显示的主要内容,如果未能解决你的问题,请参考以下文章

jQuery-4.动画篇---动画基础隐藏和显示

jquery总结06-动画事件01-基础显示和隐藏

jQuery动画效果

教你三种jQuery框架实现元素显示及隐藏动画方式

教你三种jQuery框架实现元素显示及隐藏动画方式

jQuery动画的显示与隐藏效果!