#jquery #regex #match #each
#jquery ( jquery ) #регулярное выражение #совпадение #каждый
Вопрос:
В любом случае, я хочу сделать вывод, что если идентификатор div соответствует чему-то, то добавьте к нему класс. Мой код здесь, но каждое совпадение не работает. пожалуйста, помогите, спасибо.
<script>
$(document).ready(function(){
var num = '3';
$('.ddd').each(function(){
if($(this).attr('id').match(/^'id' num$/)){
$(this).addClass('eee');
}
});
});
</script>
<style>
.ddd{float:left;display:block;background:#9FF;width:50px;height:50px;margin:10px;}
.eee{background:#F36!important;}
</style>
<div class="ddd" id="id1"></div>
<div class="ddd" id="id2"></div>
<div class="ddd" id="id3"></div>
<div class="ddd" id="id4"></div>
<div class="ddd" id="id5"></div>
<div class="ddd" id="id6"></div>
<div class="ddd" id="id7"></div>
Ответ №1:
Обновить:
var num = '3';
$('#id' num).addClass('eee');
Вы можете просто использовать starts с selector ^=
и применить класс следующим образом:
$('div.ddd[id^="id"]').addClass('eee');
Это применит eee
класс ко всем элементам, которые имеют id
атрибут, начинающийся с текста id
🙂
Комментарии:
1. но разве он просто не хочет, чтобы у третьего был класс?
2. @Sarfraz, @Royi Namir, извините за мою ошибку, я хочу только сопоставить совпадение с div
id num
(число может быть 1, 2 или 3 … как я и сделал, поэтому только один div добавит класс) спасибо.3. @Manuel: Не так, как я это вижу. OP может рассказать дальше 🙂
4. $(‘div.ddd[id^=»id’ num ‘»]’).addClass(‘eee’);
Ответ №2:
Вероятно, вам следует послушать всех этих парней, говорящих, что вы должны использовать фактический селектор id ( #id
) или селектор attribute ( [attribute=value]
), но, чтобы ответить на ваш вопрос, я собираюсь указать, что вы сделали неправильно.
При создании «динамических» регулярных выражений, которые должны инкапсулировать в них переменные, вы должны использовать new RegExp
конструктор вместо встроенного синтаксиса /rule/
. Более того, если вы просто хотите проверить, соответствует ли что-то регулярному выражению, вам, вероятно, следует использовать метод регулярного test
выражения. :
var num = '3';
var regex = new RegExp('^id' num '
Комментарии:
1. Извините всех. Но я должен исправить отмеченный правильный ответ для справедливости, потому
id^="id' num '"
что также будет соответствовать идентификаторуid30,id31...
, поэтому мне все еще нравится регулярное выражение.
Ответ №3:
$(document).ready(function(){
var num = '3';
$('.ddd').each(function(){
if($(this).attr('id').match(/^id[0-9] $/)){
$(this).addClass('eee');
}
});
});
Ответ №4:
<script>
$(document).ready(function(){
var num = '3';
$(".ddd[id='id'" num "']").addClass('eee');
});
Ответ №5:
$(document).ready(function(){
var num = '3';
$('.ddd[id^="id' num '"]').addClass('eee');
});
Ответ №6:
пусть все будет просто 🙂
$(document).ready(function(){
var num = '3';
$('.ddd#id' num).addClass('eee');
});
);
$('.ddd').each(function(){
if(regex.test($(this).attr('id'))){
$(this).addClass('eee');
}
});
Комментарии:
1. Извините всех. Но я должен исправить отмеченный правильный ответ для справедливости, потому
id^="id' num '"
что также будет соответствовать идентификаторуid30,id31...
, поэтому мне все еще нравится регулярное выражение.
Ответ №3:
Ответ №4:
Ответ №5:
Ответ №6:
пусть все будет просто 🙂