JQuery Regex Вопрос - Простое соответствие - PullRequest
1 голос
/ 14 августа 2010

Как мне сопоставить что-либо, используя jquery, настроенный так:

  • id = "intersection_resources_4_5" // hit
  • id = "intersection_content_6_5" // hit
  • id = "intersection_content_4_3" // не

Я хочу сделать что-то вроде:

$("div:regex(id, intersection_*_*_5)").each(function(){
    $(this).click();
});

Это выполнимо? Предполагая, * это подстановочный знак, который я не могу заставить работать.

Ответы [ 4 ]

2 голосов
/ 14 августа 2010

Если вам не нужен плагин и вы не хотите создавать свой собственный фильтр выбора, сделайте следующее:

$("div[id^=intersection]").filter(function() {
    var header = this.id.substr(13); 
    var regex = new RegExp('_[a-zA-Z]+_\\d+_' + header + '$');
    return regex.test(this.id);
}).click();

Было бы лучше, если бы у ваших <div> элементов был классдля повышения производительности.

Что-то вроде:

$("div.intersection[id^=intersection]")...
2 голосов
/ 14 августа 2010

С фильтром и соответствующим регулярным выражением это должно работать

$("div:regex(id, ^intersection_\d_\d_5$)").each(function(){
    $(this).click();
});

EDIT:

Попробуйте вместо этого регулярное выражение ^intersection_[\w-[0-9]]+_\d+_\d+$

Вы можете заменить части между двумя подчеркиваниями определенным словом / номером, если знаете, что это такое.

0 голосов
/ 14 августа 2010

Используйте фильтр метод с пользовательской функцией.Как то так:

var r = new RegExp("intersection_\d+_\d+_"+num);
$("div").filter(function(){
  return $(this).attr("id").match(r);
}).click();
0 голосов
/ 14 августа 2010

Для jQuery есть селектор регулярных выражений:

http://james.padolsey.com/javascript/regex-selector-for-jquery/

Это используется так:

$ ( ': регулярное выражение (идентификатор, ^ [AEIOU])');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...