Page 104 - jQuery для начинающих
P. 104
Ну теперь попробуем решить следующую задачку:
— Необходимо выделить ссылки в тексте в зависимости от её типа: внешняя,
внутренняя или якорь
Для решения лучше всего подошли бы фильтры для селекторов:
$("a:internal");
$("a:anchor");
$("a:external");
Поскольку «из коробки» данный функционал не доступен, мы напишем его сами, для этого
нам понадобится не так уж и много (пример лишь для последнего «:external»):
$.extend($.expr[':'], {
// определения внешней ссылки
// нам понадобится лишь DOM Element
external: function(element) {
// а у нас ссылка?
if (element.tagName.toUpperCase() != 'A') return false;
// есть ли атрибут href
if (element.getAttribute('href')) {
var href = element.getAttribute('href');
// отсекаем ненужное
if ((href.indexOf('/') === 0) // внутренняя ссылка
|| (href.indexOf('#') === 0) // якорь
// наш домен по http:// или https://
|| (href.indexOf(window.location.hostname) === 7)
|| (href.indexOf(window.location.hostname) === 8)
) {
return false; // мимо
} else {
return true; // да, мы нашли внешние ссылки
}
} else {
return false;
}
}
})
Рабочий код на странице sizzle.filter.html
104
www.trk.kg