jQuery - 更优雅的脚本编写方式

标签 jquery

我有以下脚本:

  • 它根据可见“li”的数量创建选项卡
  • 请注意,这只是脚本的一部分 - 我正在寻找简写 - 聪明的想法来编写等等。

你能建议任何简写吗?或者更优雅的写法?任何建议都非常感激。

    var CoundNumberOfDivs = $('#portfolio-items li:visible').length;

    if( CoundNumberOfDivs <= 4 ) { 
        $('.pagination li a').hide(); 
        return false;
    }
    else if( CoundNumberOfDivs <= 8 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(2)').show(); 

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show();
    }
    else if( CoundNumberOfDivs <= 12 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(3)').show(); 

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show();
    }
    else if( CoundNumberOfDivs <= 16 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(4)').show();

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show(); 
    }
    else if( CoundNumberOfDivs <= 20 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(5)').show();

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show(); 
    }

    else if( CoundNumberOfDivs <= 24 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(6)').show();

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show(); 
    }

    else if( CoundNumberOfDivs <= 28 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(7)').show();

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show(); 
    }

    else if( CoundNumberOfDivs <= 32 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(8)').show();

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show(); 
    }

    else if( CoundNumberOfDivs <= 36 ) { 
        $('.pagination li a').hide();
        $('.pagination li a:lt(9)').show();

        $('#portfolio-items li').hide();
        $('#portfolio-items li:lt(4)').show(); 
    }

最佳答案

这尚未经过测试,但乍一看它可以工作。我只使用一个,而不是所有 else if 语句,并将 CoundNumberOfDivs 除以 4,向上舍入,然后在 :lt 中使用它> 选择器的一部分:

var CoundNumberOfDivs = $('#portfolio-items li:visible').length;
$('.pagination li a').hide(); 
if( CoundNumberOfDivs <= 4 ) { 
    return false;
}
else {
    var num = Math.ceil(CoundNumberOfDivs / 4);
    $('.pagination li a:lt(' + num + ')').show(); 
    $('#portfolio-items li').hide();
    $('#portfolio-items li:lt(4)').show();
}

我还将 $('.pagination li a').hide(); 行移到 if 之外,因为它在您的 中重复if 和所有 else if

关于jQuery - 更优雅的脚本编写方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6985408/

相关文章:

jquery - 如果 div 为空,如何隐藏它们?

javascript - 从表单获取值的困难

javascript - 带有 slideToggle JQuery 的两种状态切换按钮

javascript - 如何覆盖JQuery插件函数?

javascript - 如何在 bootstrap 4 中提交表单

javascript - 在多个 Canvas 中无缝绘图

javascript - 使用一个提交按钮提交多个表单

javascript - 在移动设备上移动元素

javascript - jquery 或 javascript 中的 html 模板

javascript - 删除img src末尾的resize