2011-01-07 72 views
13

我有以下代碼來跟蹤與特定網址匹配的外部鏈接的瀏覽量。如何選擇具有特定href的所有錨點?

$("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的錨,而不是掃描頁面上的所有鏈接?

回答

46

可以使用Attribute Starts With Selector

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

這是如何完成的!您可以將其與[Google Analytics插件]結合使用(http://writeless.se/2011/01/a-no-fuzz-asynchronous-google-analytics-plugin/) – mekwall 2011-01-07 21:26:33

10

$('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']); 
}); 
2

在jQuery中獲取所有的HREF會是這樣:

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

alert("Found: " + elements.length); 
1
$('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(); 
}); 
+0

attr('href')of鏈接是已知的,我只是想跟蹤它是否被點擊。我不明白爲什麼使用preventDefault()。該鏈接仍應點擊外部網址。 – Jazzerus 2011-01-07 20:26:53

+0

您正在將鏈接信息添加到_gaq數組,然後做什麼?如果您立即被帶到鏈接目的地,_gaq []將會丟失,除非您打開新窗口中的鏈接。 – 2011-01-07 20:29:10

2

您可以使用屬性與選擇,以及是否需要結束獲取具有特定結束屬性的元素。像這樣的東西:

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

希望這可以幫助別人。

1

另一種簡單的方法是:

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

給出當前頁面中的所有錨標籤的列表。 要獲得錨標記的DIV ID,您可以使用:

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

爲了獲得規模應用:

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

在這裏,你可以將代碼:

<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="http://example.com/external/link/">a website link</a> 
相關問題