11

我无法弄清楚为什么我的 div 在 FadeOut 完成后不会淡入。

这是我的HTML:

<div class="header-container">
    <header class="wrapper clearfix">
        <ul class="nav nav-tabs">
            <li class="active">
                <a href="#tab1">Section 1</a>
            </li>
            <li>
                <a href="#tab2">Section 2</a>
            </li>
        </ul>
    </header>
</div>

<div class="main-container">
    <div class="main wrapper clearfix">

        <div class="tab-content">
                <div class="tab-pane active" id="tab1">
                    <p>I'm in Section 1.</p>
                </div>
                <div class="tab-pane" id="tab2">
                    <p>Howdy, I'm in Section 2.</p>
                </div>
        </div>

    </div> <!-- #main -->
</div> <!-- #main-container -->

我的JS

jQuery(document).ready(function(){
    $('.nav-tabs a').click(function (e) {
      e.preventDefault();
      var href = $(this).attr('href'); // Select first tab
        $('.tab-pane').fadeOut(1000,function(){
            $(href).fadeIn(1000);
        });
    });

});

我的 CSS

.tab-pane {
    display: none;
}

我做了一个jsfiddle:

http://jsfiddle.net/JohnnyDevv/hKq2K/1/

我让它尽可能简单......在此先感谢

4

3 回答 3

31

这将输出您期望的结果:

 $('.tab-pane').fadeOut(1000).promise().done(function(){
     $(href).fadeIn(1000);
 });

.promise()确保完成第fadeOut()一个,然后在完成时.done()执行。

演示小提琴

于 2013-03-27T13:37:28.847 回答
1

您正在使用通用类名 .tab-pane 为似乎是问题的淡出设置动画尝试利用您拥有的“.active”类

试试这个js

$('.nav-tabs a').click(function (e) {
     e.preventDefault();
     var href = $(this).attr('href'); // Select first tab
     // select the active tab then remove the active class name then do the fade out
     $('.tab-pane.active').removeClass("active").fadeOut('slow',function(){
          $(href).addClass("active").fadeIn(1000);
     });
});

JS 小提琴:http: //jsfiddle.net/hKq2K/2/

于 2013-03-27T13:30:15.813 回答
1

利用用户的钩子:Jai

如果您希望它在选项卡内容已打开的情况下不起作用,请使用:

。不是()

$('.nav-tabs a').click(function (e) {
      e.preventDefault();
      var href = $(this).attr('href'); // Select first tab
        $('.tab-pane').not(href).fadeOut(1000).promise().done(function(){
            $(href).fadeIn(1000);
        });
    });

演示 jsfiddle

对不起,我的英语,我来自另一个国家。=]

于 2017-06-15T22:28:15.760 回答