Как выбрать все привязки с определенным href?

У меня есть следующий код для отслеживания просмотров страниц для внешних ссылок, соответствующих определенному URL-адресу.

    $("a").each(function(i){
        if (
            $(this).attr('href') == "http://example.com/external/link/" || 
            $(this).attr('href') == "http://example.com/external/link"
        ) {
            $(this).click(function(){
                _gaq.push(['_trackPageview', '/external/pagename']);
            });
        }
    });

Этот код работает, но он крайне неэффективен для страниц с большим количеством ссылок. Есть ли способ использовать селектор для выбора всех якорей с соответствующими hrefs вместо сканирования по всем ссылкам на странице?

Ответы

Ответ 2

Да

$('a[href^="http://example.com/external/link"]').click(function() {});

Используя селектор атрибутов, вы можете найти конкретный href. Вместо обычного href= вы можете ожидать, я использовал href^=, который соответствует любому элементу, который начинается с указанной строки.

Также вам не нужно использовать each для привязки к событию клика всех выбранных тегов привязки. click() автоматически сделает это за вас.

$("a[href^="http://example.com/external/link"]").click(function(){
    _gaq.push(['_trackPageview', '/external/pagename']);
});

Ответ 3

В jQuery получение всех hrefs будет выглядеть следующим образом:

var href = 'http://www.google.com';
var elements = $('a[href=' + href + ']');

alert("Found: " + elements.length);

Ответ 4

Вы также можете использовать атрибуты с селектором, если вам нужно получить элементы с определенным атрибутом окончания. Что-то вроде этого:

$('a[href$=your text]') == "your text"

Надеюсь, это поможет кому-то.

Ответ 5

$('a[href^="http://example.com/external/link"]').click( function(e){
  // you do want to track which link was clicked, yes?
  _gaq.push(['_trackPageview', $(this).attr('href') ]);
  // suppress default click or you'll leave the page immediately:
  e.preventDefault(); 
  do_other_stuff_presumably_with_gaq();
});

Ответ 6

Другой простой способ:

$('a[href="MY_ANCHOR_TEXT_HERE"]');

Дает список всех привязанных тегов на текущей странице. Чтобы получить привязывающие метки в идентификаторе div, вы можете использовать:

$('#MY_DIV_ID a[href="MY_ANCHOR_TEXT_HERE"]')

Чтобы использовать размер:

$('#MY_DIV_ID a[href="MY_ANCHOR_TEXT_HERE"]').size()

Ответ 7

Здесь вы можете ввести код:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
      <script>
      $(document).ready(function(){
        $("a").each(function(){
    if($(this).attr("href") == "http://example.com/external/link/")
    {
        $(this).hide();
    }
});
});
 </script>


  <a href="#" onclick="location.href='http://example.com/external/link/'; return false;">a website link</a>