我正在制作一个小jQuery脚本,将Google Analytics pageTracker onclick数据添加到论坛上的所有相关网址,以便我跟踪外部网站的点击次数。
我不想将onclick添加到forum.sitename或sitename上的内部链接,我不想将它们添加到标记为#或以/开头的任何href。我的脚本下面很好用,但是一个小问题!
所有论坛的网址都是相对的,不以/开头。我似乎无法改变它,因此需要修改下面的jQuery以防止它像现在一样将onclick添加到链接。
我想要做的是编写.not()函数,例如.not(“[href!^ = http”),以防止jQuery将onclick添加到任何不以http开头的href。但是,.not()似乎不支持这一点。
我是jQuery的新手,无法解决这个问题。任何指针都会受到大力赞赏。
$(document).ready(function(){
// Get URL from a href
var URL = $("a").attr('href');
// Add pageTracker data for GA tracking
$("a")
.not("[href^=#]")
.not("[href^=http://forum.sitename]")
.not("[href^=http://www.sitename]")
.attr("onclick","pageTracker._trackEvent('Outgoing_Links', 'Forum', " + URL + ");")
;
});
谢谢!
答案 0 :(得分:4)
您可以像这样编写非选择器,以获取执行以http
开头的链接,但不包含“sitename.com”:
$('a[href^=http]:not([href*="sitename.com"])')
You can play with an example here,这会使用基于字符串的:not()
selector和您已使用的^=
attribute starts-with selector以及*=
attribute contains eelector。
根据评论更新:
$(functon() {
$('a[href^=http]:not([href*="sitename.com"])').click(function() {
pageTracker._trackEvent('Outgoing_Links', 'Forum', this.href);
});
});
答案 1 :(得分:2)
var regex = RegExp('^(?:f|ht)tps?://(?!' + location.hostname + ')');
$('a').filter(function(){
// Filter-out internal links
return regex.test(this.href);
}).click(function(){
pageTracker._trackEvent('Outgoing_Links', 'Forum', this.href);
})