代码之家  ›  专栏  ›  技术社区  ›  DaveDev

如何淡出一个选项卡并用另一个替换它,而不从页面中删除任何一个选项卡?

  •  0
  • DaveDev  · 技术社区  · 15 年前

    我正在尝试设计一个选项卡控件,该控件将淡出当前内容并用新内容替换它,如下所示: http://jsfiddle.net/XcMuL/

    我遇到的问题是,当你在两个选项卡之间单击时,你会看到一点闪烁,其中一个选项卡淡出,另一个同时淡入,在很短的一段时间内(不到一秒钟,但很明显),两个选项卡堆叠在一起。这是一个问题,因为它会在这段时间内将其下面的内容向下推。

    我希望它能让一个褪色,只有当它完全消失时,另一个才会褪色。问题是,我必须将文本框隐藏在页面上,因为有时它包含其他控件需要的值,所以我不能在另一个控件淡出到位之前先将其淡出,然后将其从DOM中移除。

    有人能提出解决这个问题的建议吗?也欢迎对如何优化设计提出建议。谢谢

    1 回复  |  直到 15 年前
        1
  •  2
  •   Nick Craver    15 年前

    这是因为 .fadeOut() 对于已经隐藏的 <div> 立即完成并触发回调,所以不要为其排队淡出。为此,请更改:

     $('.tab_container div').fadeOut(100, function () {
    

    对此:

    $('.tab_container div:visible').fadeOut(100, function () {
    

    You can see the updated/working version here . 在这个版本中,已经隐藏的不会褪色,因此 .fadeIn() 不会触发。