2015-12-31 2 views
1

Есть ли способ использовать CSS для таргетинга на любые элементы DOM, которые имеют имя класса с числовым диапазоном? У меня есть несколько элементов DOM с тем же именем класса, и я хочу скрыть все, кроме первого экземпляра.Скрыть все классы CSS с числовым диапазоном значений

например.

<div class="id-1"></div> 
<div class="id-1"></div> 
<div class="id-100"></div> 
<div class="id-100"></div> 
<div class="id-100"></div> 
<div class="id-1000"></div> 
<div class="id-1000"></div> 
<div class="id-1000"></div> 

И затем просто покажите первый экземпляр каждого уникального имени класса.

например.

<div class="id-1 hidden"></div> 
<div class="id-1 hidden"></div> 
<div class="id-100"></div> 
<div class="id-100 hidden"></div> 
<div class="id-100 hidden"></div> 
<div class="id-1000"></div> 
<div class="id-1000 hidden"></div> 
<div class="id-1000 hidden"></div> 

Оговорки, я не знаю, что имена классов будут заранее, так что я не могу вручную ввести их в своем файле CSS.

Я использую LESS CSS, поэтому использование функции может работать.

+0

ли числовые значения совершенно случайно, или они на самом деле все начинаются с 1? Есть ли что-то еще уникальное в числовых значениях как группа? –

+0

Да, диапазон может быть от 1 до 300 000. Он основан на поле Id из таблицы MySQL с большим количеством строк. – KoalaKid

+1

'div [class^=" id - "]' будет нацеливаться на все элементы с атрибутом класса, начинающимся с 'id-', в случае, если это относится только к номерам. –

ответ

0

Вам нужен префикс, чтобы выбрать и распечатать весь класс. В этой проблеме я добавил префикс: 'id-'.

Добавить CSS

.hidden{ 
    display: none; 
} 

Добавить JS

var container = document.getElementsByTagName('div'); 
var prefix = 'id-'; 
var kw = ''; 
for(var i = 0; i < container.length; i++){ 
    var currentClass = container[i].classList[0]; 
    if(currentClass.indexOf(prefix) > -1){ 
    if(kw === currentClass){ 
     console.log(currentClass); 
     container[i].className = currentClass+" hidden"; 
    } else{ 
     kw = currentClass; 
    } 
    } 

} 
+0

Прочитайте второй абзац вопроса, пожалуйста , – Siguza

+0

Да, но, как указано, я не знаю, какие имена классов будут перед рукой, поскольку они сгенерированы с помощью PHP. – KoalaKid

+0

Я редактировал свое сообщение. Пожалуйста, проверь это. И он работает только тогда, когда вы убедитесь, что префикс имени класса – Vuong