jquery切换所有内容

时间:2014-02-18 08:57:15

标签: jquery toggle

嗨,我正试图切换内容。

例如:如果我点击它打开的第一个内容,其余内容保持关闭状态,如果我点击第二个内容,第一个内容关闭,第二个内容打开,它会继续,直到我没有更多内容。

我的问题是当我点击“+”时会打开所有内容。

这是我的HTML

<div class="description">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut diam lacus, auctor vitae urna eget, sollicitudin ullamcorper eros. Ut mattis dignissim tellus, ac scelerisque turpis fermentum vel. Etiam faucibus eros adipiscing turpis commodo, quis pulvinar ligula ultrices. Suspendisse non felis in nisl mollis tristique vitae vitae turpis. Nunc eleifend fringilla lectus ut dapibus. Aenean et dui sed libero gravida vulputate. Proin eu metus sollicitudin, laoreet mi in, cursus metus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed euismod lacus in metus porta, vitae laoreet justo eleifend. Curabitur urna tortor, egestas in dictum vel, dapibus vel orci. In sed ultricies arcu. Vivamus semper eu quam ut faucibus. </p>
</div>
<a href="#" class="toggle-link">+</a>

<div class="description">
<p>Duis bibendum diam ut imperdiet pharetra. In hac habitasse platea dictumst. Aenean hendrerit metus et imperdiet consequat. Suspendisse sit amet turpis pellentesque, rutrum tellus vitae, pretium risus. Nunc at mauris nec sem vestibulum dapibus ac eget elit. Cras luctus felis in nibh elementum, ut hendrerit est sagittis. Phasellus quis dolor malesuada, feugiat erat ac, consectetur nisl. Sed auctor dapibus augue, in sagittis ligula congue sed. Curabitur sollicitudin, tortor in scelerisque hendrerit, sem nunc aliquet mi, et accumsan felis dui sit amet erat. Sed fermentum tempus est sit amet malesuada. Donec posuere dui nibh, a ullamcorper nibh interdum sit amet. Maecenas hendrerit in arcu at consequat. Integer tempus dolor at ante ullamcorper sodales. Praesent ultricies turpis id arcu pulvinar, id fringilla metus imperdiet. Etiam felis justo, ultrices a rutrum a, bibendum at dolor. Nam felis nisi, tincidunt fermentum ornare ut, euismod sed felis. </p>
</div>
<a href="#" class="toggle-link">+</a>

这是我的Jquery

$.fn.toggleClick=function(){
    var functions=arguments;
    return this.click(function(){
        var iteration=$(this).data('iteration')||0;
        functions[iteration].apply(this,arguments);
        iteration= (iteration+1) %functions.length;
        $(this).data('iteration',iteration);
    });
};


var $dscr = $('.description'),
    $switch = $('.toggle-link'),
    initHeight = 40; // Initial height

$dscr.each(function () {
    $(this).data("realHeight", $(this).height()); // Create new property realHeight
}).css({
    overflow: "hidden",
    height: initHeight  
});

$switch.toggleClick(function () {
    $dscr.animate({
        height: $dscr.data("realHeight")
    }, 600);
    $switch.html("-");

}, function () {
    $dscr.animate({
        height: initHeight
    }, 600);
    $switch.html("+");
});

以下是jsfiddle jsfiddle

的链接

1 个答案:

答案 0 :(得分:0)

更改代码的这一部分:

$switch.toggleClick(function () {
    $('.description').animate({
        height: 40
    });
    $(this).prevAll('.description:first').animate({
        height: $dscr.data("realHeight")
    }, 600);
    $(this).html("-");

}, function () {
    $dscr.animate({
        height: initHeight
    }, 600);
    $switch.html("+");
});

FIDDLE

您想使用$(this)选择当前点击的元素。