jquery toggle:循环效果+多次切换

时间:2013-07-01 17:02:12

标签: jquery slidetoggle

通过下面的切换(jsfiddle),我希望能够执行以下操作:

  1. 具有循环效果,即能够打开&按我想要的次数关闭切换。现在,我只能打开和关闭一次切换,因为我无法获得第二个打开的链接来再次命令淡入淡出效果。
  2. 要在同一篇文章(joomla网站)上调用几个切换。我尝试复制代码并使用heading2content2,但没有成功。这是我的代码:
  3. 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');
    
        });
    });
    

2 个答案:

答案 0 :(得分: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 :(得分: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);
    });    

});