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
   99   100   101   102   103   104   105   106   107   108   109