2011-01-07 5 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

आप सभी hrefs हो रही जैसा होगा jQuery में 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

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

उपयोग कर सकते हैं:

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

एटीआर ('href') लिंक ज्ञात है, मैं बस ट्रैक करना चाहता हूं कि इसे क्लिक किया गया था या नहीं। मुझे समझ में नहीं आता क्यों रोकथाम डीफॉल्ट() का उपयोग किया जाता है। लिंक अभी भी बाहरी यूआरएल पर क्लिकथ्रू होना चाहिए। – Jazzerus

+0

आप _gaq सरणी में लिंक जानकारी जोड़ रहे हैं, लेकिन फिर क्या कर रहे हैं? यदि आपको तुरंत लिंक गंतव्य पर ले जाया गया है, तो _gaq [] खो जाएगा, जब तक कि आप एक नई विंडो में लिंक खोल रहे हों। –

+0

.push फ़ंक्शन एक विशिष्ट सरणी के पुश() फ़ंक्शन की तरह काम नहीं करता है - धक्का दिया गया आइटम तुरंत निष्पादित किया जाता है। Http://code.google देखें।अधिक जानकारी के लिए com/apis/analytics/docs/gaJS/gaJSApi_gaq.html # _gaq.push – Jazzerus

2

आप विशेषता का उपयोग कर सकते हैं और साथ ही अगर आप की जरूरत चयनकर्ता के साथ समाप्त होता है कुछ विशिष्ट समाप्ति विशेषता के साथ तत्व प्राप्त करने के लिए। कुछ ऐसा:

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

उम्मीद है कि यह किसी की सहायता करेगा।

1

एक और सरल तरीका है:

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

वर्तमान पृष्ठ में सभी लंगर टैग की सूची देता है। में एक div आईडी एंकर टैग प्राप्त करने के लिए आप का उपयोग कर सकते हैं:

$('#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> 


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

आकार उपयोग प्राप्त करने के लिए

<a href="http://example.com/external/link/">a website link</a> 
+0

हालांकि यह काम करता है, मैं इस तरह से ऐसा करने की सलाह नहीं दूंगा क्योंकि इसे वेबसाइट पर प्रत्येक एंकर के माध्यम से लूप करना है। जो सैकड़ों या अधिक हो सकता है। –

संबंधित मुद्दे