隐藏第1,第3,第4,第6,第7,第9,第10,第12 div容器

时间:2017-06-28 09:53:28

标签: javascript jquery html

我有以下数组,它们是html页面中的元素:

["1", "1", "1","2", "2", "2","3", "3", "3","4", "4", "4",];

更具体地说,这些是div:

<div class="abc1">1</div>
<div class="abc2">1</div>
<div class="abc3">1</div>
<div class="abc4">2</div>
<div class="abc5">2</div>
<div class="abc6">2</div>
<div class="abc7">3</div>
<div class="abc8">3</div>
<div class="abc9">3</div>
<div class="abc10">4</div>
<div class="abc11">4</div>
<div class="abc12">4</div>

我想要隐藏第1,第3,第4,第6,第7,第9,第10,第12 div。

我尝试了这段代码,但它只隐藏了每个奇数。

$(document).ready(hideLabelFF);

function hideLabelFF(){
$('*[class^="abc"]').each(function (i){
    $('*[class^="abc"]:nth-of-type(2n+1)').hide();
});
};

2 个答案:

答案 0 :(得分:3)

使用 2n + 1 ,您的目标是奇数div 。你有2个系列,一个是1,4,7,10 ......另一个是3,6,9,12 ......

只需尝试按照

function hideLabelFF(){
    $('*[class^="abc"]:nth-of-type(3n+1)').hide();
    $('*[class^="abc"]:nth-of-type(3n)').hide();
}

供参考 - plunker

答案 1 :(得分:1)

我不确定这个行动的目的是什么;听起来像一个家庭作业,找到最聪明的方法来做到这一点。

最直接的方式是:

[1, 3, 4, 6, 7, 9, 10, 12].forEach(num => $(`.abc${num}`).hide());
但是,它并不聪明。你已经注意到了一种模式。所示元素是2,5,8,11,即3n-1。因此,您可以这样做:

$('*[class^="abc"]:nth-of-type(3n-2)').hide();
$('*[class^="abc"]:nth-of-type(3n)').hide();

隐藏隐藏:

$('*[class^="abc"]').hide();
$('*[class^="abc"]:nth-of-type(3n-1)').show();

或者最后,使用.not()方法将这一切带到一行:

$('*[class^="abc"]').not(":nth-of-type(3n-1)").hide();