#javascript #jquery #html
#javascript #jquery #HTML
Вопрос:
<span id="aaa_1_bbb">aaa</span>
<span id="aaa_2_bbb">aaa</span>
<span id="aaa_3_bbb">aaa</span>
<span id="aaa_4_bbb">aaa</span>
<span id="aaa_5_bbb">aaa</span>
<span id="aaa_6_bbb">aaa</span>
<span id="bbb_1_bbb">aaa</span>
<span id="ccc_1_bbb">aaa</span>
<span id="ddd_1_bbb">aaa</span>
<span id="aaa_1_xxx">aaa</span>
$('span[id="aaa_*_bbb"]').css('background-color', 'red');
как я должен изменить этот jQuery? я бы хотел, чтобы добавить css (background-color: red) только для идентификатора aaa_*_bbb. * = numbers
Комментарии:
1. Я прочитал ваш вопрос четыре раза и до сих пор не понимаю, о чем вы спрашиваете.
2. @ColinFine: aaa_22222_bbb должен быть красным
3. @Colin Ему нужен селектор CSS, который соответствует идентификатору HTML по регулярному выражению.
Ответ №1:
В нынешнем виде HTML вы можете использовать комбинацию атрибута, начинающегося с селекторов, и атрибута, заканчивающегося селекторами:
$('span[id^="aaa_"]').filter('[id$="_bbb"]').css('background-color', 'red');
Однако, если HTML находится под вашим контролем, вам следует рассмотреть возможность добавления a class
к этим элементам или id
or class
к их родительскому элементу, чтобы вы могли выбирать их более простым способом.
Комментарии:
1. Первый выбор получает aaa_ *, а второй отфильтровывает те, которые заканчиваются только на bbb, поэтому получается результат aaa * _bbb @genesis
2. Мне это нравится больше, чем моя реализация filter 🙂
3. легко забыть самое простое решение
Ответ №2:
Вы могли бы использовать .filter
$('span').filter(function () { return /aaa_d _bbb/.test(this.id); }).css('background-color', 'red');
Ответ №3:
Вы могли бы сделать что-то вроде:
$('span').each(function() {
var span_id = $(this).attr('id');
if (span_id.substring(0, 3) == "aaa" amp;amp; span_id.substring(span_id.length - 3, span_id.length) == "bbb") {
$(this).css('background-color', 'red');
}
});
Он принимает каждый элемент span и проверяет, являются ли первые 3 символа «aaa», а последние 3 — «bbb», и присваивает CSS, если это так.
Комментарии:
1. 1 спасибо, все в порядке, но я изменил свой пример. я нахожу другой результат.
Ответ №4:
Я думаю, вам нужно использовать это: http://james.padolsey.com/javascript/regex-selector-for-jquery /
Ответ №5:
Лучшим вариантом было бы установить определенный класс для этих элементов, например
<span id="aaa_1_bbb" class="aaabbb">aaa</span>
<span id="aaa_2_bbb" class="aaabbb">aaa</span>
<span id="aaa_3_bbb" class="aaabbb">aaa</span>
<span id="aaa_4_bbb" class="aaabbb">aaa</span>
<span id="aaa_5_bbb" class="aaabbb">aaa</span>
<span id="aaa_6_bbb" class="aaabbb">aaa</span>
<span id="bbb_1_bbb">aaa</span>
<span id="ccc_1_bbb">aaa</span>
<span id="ddd_1_bbb">aaa</span>
Затем вы можете просто сделать $('span.aaabbb').css('background-color', 'red');