var start = $("div a").length - 21;
start = start < 0 ? 0 : start;
$("div a:gt(" + start + ")[href^='#']").each(function() {
var $a = $(this);
$a.attr("href", $a.attr("href").replace("#", ""));
});
рабочий пример: http://jsfiddle.net/958ea/2/
Разъяснения
var start = $("div a").length - 21;
установит start
на общее количество тегов a
минус 21. 20 + 1, поскольку длина - это общее число, но нам нужен индекс на основе 0.
Таким образом, если бы было 500
тегов привязки, start
был бы равен 479
;
start = start < 0 ? 0 : start;
сбросит start
на 0
, если так или иначе не было 20 a
тегов. Для этого примера это, вероятно, не нужно, но хорошая проверка, чтобы все не сломалось.
Затем мы перебираем теги a
с помощью этого селектора: "div a:gt(" + start + ")[href^='#']"
, который собирается выбрать все теги a
с индексом, превышающим значение start
(которое в моем примере равно index = 10, что <a href="#11">
). Затем он дополнительно фильтрует теги a
, которые начинаются с #
. Это также может быть ненужным, но это еще одна хорошая вещь для проверки.
Наконец, символ #
в href
заменяется пустой строкой ""