2013-07-01 119 views
1

我想第二個[閱讀更多]在.content淡出後出現。 jsfiddle

HTML

<div> 
    <span class="heading">This is the beginning of the sentence. </span> 
    <span class="content">This is the end of the sentence. </span> 
</div> 

CSS

.heading { 
    cursor: pointer; 
} 

JS

$(document).ready(function() { 
    $('.content').after('<a href="#" class="toggle-link">[Read More]</a>'); 
    $(".content").hide(); 
    $('.toggle-link').click(function (e) { 
     e.preventDefault(); 
     var $link = $(this); 

     if ($link.data('expanded') == true) { 
      $link.data('expanded', false); 
      $link.text('[Read More]');    
     } else { 
      $link.data('expanded', true); 
      $link.text('[Close]'); 
     } 

     $link.prev(".content").fadeToggle(1000); 
    });  

}); 
+0

在淡出完成後做你想做的事情..在淡出回調函數中......'... fadeToggle(1000,function({// here});' – bipen

回答

1

添加所有dispalying代碼fadeToggle()的回調函數後,以確保它完成..

試試這個

$(document).ready(function() { 
$('.content').after('<a href="#" class="toggle-link">[Read More]</a>'); 
$(".content").hide(); 
$('.toggle-link').click(function (e) { 
    e.preventDefault(); 
    var $link = $(this); 
    $link.text(''); //<---here empty the text so the animation is clear 
    $link.prev(".content").fadeToggle(1000,function(){ 



    if ($link.data('expanded') == true) { 
     $link.data('expanded', false); 
     $link.text('[Read More]');    
    } else { 
     $link.data('expanded', true); 
     $link.text('[Close]'); 
    } 
    }); 
});  

}); 

fiddle here

+0

非常感謝這麼多!這正是我想要的! – JinSnow

+0

歡迎...很高興它幫助.... – bipen

1

把它放在fadeToggle回調內部,使得動畫完成後出現。此外,如果您要存儲的是擴展僅用於交換文本值,您不需要它。您可以改用.text()回調函數來返回基於當前文本的值。

$(document).ready(function() { 
    $('.content').after('<a href="#" class="toggle-link">[Read More]</a>'); 
    $(".content").hide(); 

    $('.toggle-link').click(function (e) { 
     e.preventDefault(); 
     var $link = $(this); 
     $link.prev(".content").fadeToggle(1000, function() { //Do it here 
      var isExpanded = $link.data('expanded'); //Get the expanded value 
      $link.text(function (_, text) { //use .text() function to switch value 
       return text == "[Read More]" ? "[Close]" : "[Read More]"; 
      }); 
      $link.data('expanded', !isExpanded); //Dont need this if you are using this only for expand collapse text switching. 

     }); 
    }); 

}); 

Demo

+0

謝謝,但我想要的效果只適用於第二次閱讀更多(在我點擊關閉後)。 – JinSnow

+0

@Giom你不想這樣做關閉? – PSL

+0

對不起,我不明白你的問題。用我的代碼,當我第一次點擊閱讀更多時,就會出現一個關閉鏈接。直到那裏一切正常。但是當我點擊關閉時,閱讀更多鏈接出現在淡出效果之前。我想延遲第二次閱讀的淡入,以便在淡出內容後出現。不知道我是否足夠清楚!感謝您的幫助! – JinSnow

0
How about 
$link.prev(".content").fadeToggle(1000, function(){ 
    //code to fade read more link in 
});