仅当超过3个元素时才显示更多内容按钮,否则不显示任何内容。使用jquery:lt:gt

时间:2013-05-27 10:55:19

标签: javascript jquery html

我发现了一个几乎可以实现我想要的代码。但我不知道如何正确地修改它以调整它的功能。

我想做的事情:

  1. 如果有超过3个列表项,请隐藏其余项目并显示"全部显示"单击时显示其余项目的按钮。

  2. 如果少于2个项目隐藏"显示全部"按钮。

  3. 可选 - 在显示项目时添加一个很好的效果。

  4. HTML

    <span class="show_button">Show all</span>
    <ul class="test">
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
    </ul>
    

    的Javascript

    $('ul.test li:gt(2)').hide();
    if ( $('ul.test li:lt(2)') ) {
        $('.show_button').css('display', 'none');
    }
    else {
        $('.show_button').css('display', 'block');
    }
    $('.show_button').click(function() {
        $('ul.test li:gt(2)').show();
    });
    

    不幸的是,此代码无法显示&#34;显示更多&#34;如果有超过3个项目的按钮,它只是隐藏它。

3 个答案:

答案 0 :(得分:2)

$('ul.test li:gt(2)').hide();

$('.show_button').click(function () {
    $('ul.test li:gt(2)').toggle('slide');
});

http://jsfiddle.net/BjG5M/

答案 1 :(得分:0)

您只需更改一行。你的第一个if-block总是返回true。 jQuery选择器始终返回一个对象,因此检查它的结果将始终返回true。返回的对象包含一个元素数组,如果选择器没有匹配任何元素,则为空(长度为0)。

if ( $('ul.test li:gt(2)').length > 0 ) {
    $('.show_button').css('display', 'block');
} else {
    $('.show_button').css('display', 'none');
}

答案 2 :(得分:0)

$('ul.test li:gt(2)').hide();

$('.show_button').click(function () {
    $('ul.test li:gt(2)').toggle('slide');
});