Как скрыть все div с именем класса, кроме тех, которые содержатся в массиве индексов. С или без jquery

0

У меня есть список div:

<div class="person"></div>
<div class="person"></div>
<div class="person"></div>

Я хочу скрыть все divs, кроме 107-го и 2-го.

Я пробовал использовать filter jquery, но не мог полностью обернуть голову вокруг решения.

  • 0
    $('.person').not(':nth-of-type(2),:nth-of-type(107)').hide()
  • 0
    @ j08691 попытался добавить ясности.
Теги:

6 ответов

1
Лучший ответ

Вы можете фильтровать (на основе нуля)

var arr = [3, 107];

$('.person').filter(function(i) {
    return $.inArray((i+1), arr) == -1;
}).hide();

FIDDLE

  • 0
    У меня есть множество индексов, чтобы не скрывать. Не только конкретные цифры. Я думаю, что я мог бы перестроить вашу, чтобы сделать эту работу.
  • 0
    @Джонстон - конечно, отредактировано!
0

DEMO FIDDLE

Вы можете просто использовать простой старый CSS:

.person {
    display: none; 
}

.person:nth-child(2), 
.person:nth-child(107) { 
      display: block; 
}
0

Вы ищете селектор "nth-child".

Следующее пропустит два, и каждый другой div будет выбран правилами CSS внутри.

div.person:nth-child(1n+2)

В твоем случае:

div.person:nth-child(107), div.person:nth-child(2)
{
    /* Rules here */
}
0

Вот чистое решение JS, если это плавает на вашей лодке, хотя быстрая CSS также была бы вариантом:

[].forEach.call( document.querySelectorAll('div.person'), function(el) {
   el.style.display = 'none';
});

[].forEach.call(document.querySelectorAll('div.person:nth-child(2), div.person:nth-child(107)', function(el) {
   el.style.display = 'block';
})
0

jsFiddle Demo

Соберите список людей, а затем используйте .eq() чтобы выбрать их (основано на 0). Вот простой пример:

var people = $('.person');
var exclude = people.eq(3).add(people.eq(5));
people.not(exclude).hide();
0

Используйте селектор CSS или используйте селектор Jquery следующим образом:

.person:nth-child(107) { display:none; }



$(".person").eq(106).hide();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню