Считайте вверх для ID JQuery - PullRequest
2 голосов
/ 18 мая 2010

У меня есть следующая структура HTML

<div id="test-1-yay"></div>
... bunch of code ...
<div id="test-2-yay"></div>
... bunch of code ...
<div id="test-3-yay"></div>

Мне было интересно, как я могу использовать jQuery, чтобы в основном идентифицировать каждый из этих "идентификаторов", а затем применить к ним некоторый jQuery? Я новичок в этом, так немного не уверен? Что-то вроде

if $('#test-1-yay' || '#test-2-yay' || '#test-3-yay') {
do stuff to all ID's
}

Но проблема в том, что я хочу, чтобы это продолжалось, поскольку это может перейти к # test-201-yay, # test-202-yay и т. Д.?

Thx

Ответы [ 4 ]

3 голосов
/ 18 мая 2010

Почему бы вам не добавить класс в div?

1 голос
/ 18 мая 2010

Вы можете попробовать что-то вроде:

$("div[id^='test']")

или

$("div[id$='yay']")

или попробуйте объединить два

Руководство

0 голосов
/ 18 мая 2010

Вы можете сделать это так:

$("div[id^=test-]").each(function(){ //selects all dives having the string 'test-' in it
$that = $(this) 
$that.text($that.attr("id").split("-")[1]) //splits the sting by "-" and gives you out the middle part (in your case the number)
})

проверить это здесь http://jsfiddle.net/aj5Qk/1/

0 голосов
/ 18 мая 2010

Вы можете использовать селектор подстроки , чтобы получить большинство пути:

var divs = $('div[id^=test-]'); // All divs with IDs starting with "test-"

... что будет лучше, если вы немного измените соглашение об именах, чтобы число было в конце. Но я думаю, что склонялся бы к использованию какого-либо другого аспекта структуры (родительского узла), или класса, или атрибута data-xyz ...

Редактировать A пара селекторов подстрок может сделать это:

var divs = $('div[id^=test-]').filter("div[id$=yay]");

Он получает все те, чьи идентификаторы начинаются с "test-", а затем отфильтровывает те, которые не заканчиваются на "yay". Закрыть , в любом случае ...

...