Обновление Я пропустил, что у вас уже есть цикл each
.Это выглядит хорошо, за исключением того, что вы, похоже, ищете id
s, начинающиеся с "table_", но у вас их нет (у вас есть "list_" и "id_").Кроме того, вы делаете это совершенно безгранично, что, вероятно, будет довольно много работы.Чем более узким может быть селектор, тем лучше (обычно).
Как я пытаюсь это сделать, я не могу понять, как получить идентификатор диапазона.
В цикле each
элемент id
элемента DOM доступен как this.id
.
В моем исходном ответе указано, как это сделать с цитируемой вами разметкой.
Оригинальный ответ :
jQuery имеет атрибут "начинается с" селектора , поэтому вы можете найти все дочерние элементы, которые span
s сid
начиная с "id_" и затем циклически присваивая им новые идентификаторы:
$("#list").find('span[id^="id_"]').each(function(index) {
this.id = "id_" + (index + 1);
});
Использует find
для их поиска, затем each
, чтобы пройти через них.Я предположил, что вы хотите начать нумерацию с 1, а не с 0, следовательно, добавив единицу к index
, который jQuery передает в each. Assigning the IDs can be done with the raw DOM element (
this in the
each` callback), поскольку в этом нет ничего сложного.
Хотя на самом деле вам не нужен отдельный вызов для find
, вы можете просто использовать селектор-потомок:
$('#list span[id^="id_"]').each(function(index) {
this.id = "id_" + (index + 1);
});
Живой пример
Дальнейшее обновление : Если вы действительно хотите повеселиться, вы можете изменить нумерацию списков, таблиц в списках и промежутков в таблицах:
$('#list div[id^="list_"]').each(function(listIndex) {
// This is called for each list, we renumber them...
++listIndex; // So it's 1-based
this.id = "list_" + listIndex;
// ...then process the tables within them
$(this).find('table[id^="table_"]').each(function(tblIndex) {
// Called for each table in the list, we renumber them...
++tblIndex; // 1-based
this.id = "table_" + listIndex + "_" + tblIndex;
// ...then process the spans
$(this).find('span[id^="id_"]').each(function(spanIndex) {
// Called for each span in the table
++spanIndex; // 1-based
this.id = "id_" + listIndex + "_" + tblIndex + "_" + spanIndex;
});
});
});
Живой пример