在FadeOut之后淡出

时间:2013-03-27 13:16:20

标签: jquery

我无法弄清楚为什么我的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/

我尽可能简单...... 提前致谢

3 个答案:

答案 0 :(得分:23)

这将输出您期望的结果:

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

.promise()确保首先完成fadeOut(),然后在.done()执行完毕后完成。{/ p>

DEMO FIDDLE

答案 1 :(得分: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/

答案 2 :(得分:1)

利用用户的钩子:Jai

如果您希望它在标签内容已打开时不起作用,请使用:

  

<强> .not()

$('.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);
        });
    });

DEMO jsfiddle

对不起我的英语,我来自其他国籍。 =]