如何选择具有特定href的所有锚点?

WNR*_*erg 18 html jquery

我有以下代码来跟踪与特定网址匹配的外部链接的网页浏览量.

    $("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']);
            });
        }
    });
Run Code Online (Sandbox Code Playgroud)

此代码有效,但对于具有大量链接的页面来说效率极低.有没有办法使用选择器来选择具有匹配hrefs的所有锚点而不是扫描页面上的所有链接?

Woo*_*kai 53

您可以使用属性启动选择器

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


Mar*_*row 12

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

使用属性选择器,您可以查找特定的href.而不是href=你可能期望的正常,我使用href^=了匹配任何指定字符串开头的元素.

此外,您无需使用each绑定到您将选择的所有锚标记的click事件.click()会自动为你做这件事.

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