Выберите все ссылки, чьи цели не имеют суффиксов, используя jQuery - PullRequest
0 голосов
/ 12 сентября 2018

Как я могу выполнить выбор, описанный в заголовке?Я думаю, что было бы довольно безопасно предположить, что такие ссылки не имеют ничего вроде .asdafasdfsaf, .html или .zip в конце своих целей, поэтому я попробовал следующее:

var links = jQuery("a:not([href$='.*'])") // Period as is
var links = jQuery("a:not([href$='\.*'])") // One escape
var links = jQuery("a:not([href$='\\.*'])") // Two escapes

Похоже, что ничего из этого не делает ничего с точки зрения предотвращения выбора нежелательных ссылок.Как можно это исправить?

РЕДАКТИРОВАТЬ:

Эта попытка с RegExes не сработала:

function has_suffix (target_string) {
   regex = RegExp("(\/.*\..*)$");
   if ( regex.test(target_string) ) {
     return true;
   } else {
     return false;
   }

var links = jQuery("a").filter(
  function () {
    target = $(this).attr("href")
    console.log(target)
    return $(true,this) === has_suffix(target);
  });

Проверка RegExp в консоли, кажется, дает результатычто я хочу, но на самом деле использование функции has_suffix в фильтре вызывает у меня головную боль.Документация для filter мне не нужна;в примерах это не совсем понятно.

1 Ответ

0 голосов
/ 12 сентября 2018

Вы можете просто вернуть результат has_suffix() напрямую, поскольку функция фильтра уже запускается один раз для каждого соответствующего элемента:

var links = jQuery("a").filter(
  function () {
    target = $(this).attr("href")
    console.log(target)
    return has_suffix(target);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...