Добавить индекс в href - PullRequest
2 голосов
/ 13 марта 2011

У меня есть неупорядоченный список ссылок, к которым мне нужно добавить индекс в виде числа.

Итак, href="#" читает href="#1", href="#2" и т. Д.

Я понимаюМне, вероятно, нужно использовать .each(), но мой синтаксис-фу еще не до конца.

Часть меня знает, что это смехотворно просто, но у меня понедельник атм.

Ответы [ 3 ]

5 голосов
/ 13 марта 2011

Вы имеете в виду индекс элемента в наборе выбранных элементов? Если это так, вы можете использовать .attr() и передать ему функцию:

$('a').attr('href', function(i, value) {
    return value + (i+1);
});

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

$('#theList a')

Обновление:

Кажется, в jQuery 1.3.2 (и до этого) есть ошибка. Кажется, что старое значение не передается обратному вызову . Таким образом, вы должны прочитать значение явно:

return this.href + (i+1);

Конечно, если старое значение всегда #, вы можете просто объединить его с индексом:

return '#' + (i+1); 

Но в этом случае вы можете использовать each() в этом случае, как показывает @ Shadow Wizard в своем ответе . Преимущество передачи функции в attr состоит только в том, что вы избегаете двухкратного доступа к атрибуту (один для чтения и один для записи), который, похоже, не работает в jQuery 1.3.2 в любом случае.

2 голосов
/ 13 марта 2011

Ну, это воскресенье, но ..

$("#myList li").each(function(index) {
    $(this).find("a").attr("href", "#" + (index + 1));
});

Тестовый пример .

0 голосов
/ 13 марта 2011

Проще использовать функцию .attr () .

$('ul a').attr("href", function(index, cHRef) {
    return cHRef + index;
});

Если вы ограничены более ранними реализациями jQuery старше v1.1, вам нужно будет использовать .each () :

$('ul a').each(function(index, cAnchor) {
    cAnchor.attr('href', cAnchor.attr('href') + index);
});
...