2013-07-01 59 views
1

下面(jsfiddle)的切換,我想能夠做到以下幾點:jQuery的切換:循環效應+多重切換

  1. 爲了有一個循環的效果,即,能夠打開&接近儘可能地多次切換。目前,我只能打開和關閉切換一次,因爲我無法再次獲得第二個打開的鏈接以指揮淡化效果。
  2. 要在同一篇文章(joomla網站)上調用幾個切換。我試着複製代碼並使用heading2,content2但沒有成功。這裏是我的代碼:

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

jQuery(document).ready(function() { 
    jQuery(".content").hide(); 
    //toggle the componenet with class msg_body 
    $('<a href="#" id="read-more-link">[Read More]</a>').appendTo('.heading'); 
    $('#read-more-link').click(function (e) { 
     e.preventDefault(); 
     $(this).fadeOut(); 
     $(this).next($(".content").fadeToggle(1000)); 
    }); 
    $('<a href="#" id="close-link">[close]</a>').appendTo('.content'); 
    $('#close-link').click(function (e) { 
     e.preventDefault(); 
     $(this).fadeOut(); 
     $(this).next($(".content").fadeToggle(1000)); 
     $('<a href="#" id="read-more-link">[Read More]</a>').appendTo('.heading'); 

    }); 
}); 
+0

只是好奇,你爲什麼要同時使用'jQuery'和'$'互換嗎? –

+0

1.使用委託2.使用特定的橫向方法作爲.find(),.closest()等... –

+1

感謝您的回答! @SetSailMedia:我是一個新手jQuery的世界,我只是從網站複製的代碼,並試圖改善它。我的不好,我用$更新了。 – JinSnow

回答

2

下面是一個例子,我想更簡單。它已經從DOM少追加和刪除元素:

http://jsfiddle.net/4Mq3B/

$(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

這也是一個很好的例子+1 –

+0

非常感謝!我想了解if/else循環如何工作! – JinSnow

+0

請參閱http://api.jquery.com/data/。 data()是一種將任意數據附加到元素的方法。我認爲這就是你正在努力的。 –

3

1 - 由於您想在同一頁面上使用多個閱讀更多/關閉鏈接,因此您必須使用類而不是id,因爲您不能重複id。

2-使用類,穿越必須是相對於當前元素

的動畫將還有待提高,但here's a working version

jQuery(document).ready(function() { 
    jQuery(".content").hide(); 

    //toggle the componenet with class msg_body 
    $('<a href="#" class="read-more">[Read More]</a>') 
     .appendTo('.heading'); 

    $('.read-more').on('click', function(e) { 
     e.preventDefault(); 
     $(this).fadeOut(); 
     $(this).closest('.heading').next(".content").fadeToggle(1000); 
    }); 

    $('<a href="#" class="close-link">[close]</a>').appendTo('.content'); 

    $('.close-link').on('click', function(e) { 
     e.preventDefault(); 
     $(this).closest('.content').fadeToggle(1000) 
      .prev('.heading').find('.read-more').fadeToggle(1000); 

    }); 
}); 
+1

這是一個很好的例子+1 –

+0

非常感謝!我現在明白使用.closest!真是一個很棒的伎倆,我希望我能下載你的大腦! – JinSnow