У меня есть несколько элементов с уникальными идентификаторами как так:
<div id='item-1-top'></div>
<div id='item-2-top'></div>
<div id='item-3-top'></div>
Я надеялся, что следующее будет работать с помощью jQuery:
$("#item-[.]+-top").each(function() {
$(this).hide();
});
У меня нет хорошего схватывания регулярных выражений, и я ценил бы некоторый вход, поскольку вышеупомянутое, кажется, является неправильным.
Если вы делали это с regex, выражение будет просто:
item-\d-top
Где \ d
указывает любую отдельную цифру (0..9), а другие символы не имеют особого значения (поэтому рассматриваются как литералы).
Однако jQuery в настоящее время не имеет фильтра регулярных выражений (только такие вещи, как начало / конец / содержит / и т. Д.), Поэтому вам придется создать свой собственный (что возможно, но если вы считаете, что вам следует прекратить и подумайте, что / почему вы фильтруете, и сначала выясните, есть ли лучший способ).
Гораздо проще было бы создать класс (как предлагает serg555 ) , поскольку именно так вы обращаетесь с этими элементами.
Или (если вы не можете изменить разметку для добавления класса), затем используйте существующие фильтры, расширяя ответ gddc , я мог бы сделать:
$('div[id^=item-][id$=-top]').hide()
(Поскольку у вас может быть несколько элементы, заканчивающиеся только на «верх», сейчас или в будущем, поэтому вам нужно быть более конкретным, чтобы случайно не скрыть другие вещи.)
Я бы присвоил им какой-нибудь класс, например item
, а затем сделал бы поиск по этому классу $(".item")
.
Если бы id был чем-то вроде news-top-1
, news-top-2
, news-top-3
, news-top-4
и т.д., то селекторы помогли бы вам.
http://api.jquery.com/attribute-starts-with-selector/
$.each( $("input[name^='news-top-']"), function () {
alert( $(this).hide() );
});