我正在编写一个小 jQuery 脚本,将 Google Analytics pageTracker onclick 数据添加到论坛上的所有相关 URL,从而允许我跟踪对外部站点的点击。
我不想将 onclick 添加到 forum.sitename 或 sitename 上的内部链接,也不想将它们添加到任何标记为 # 或以/开头的 href。我的下面的脚本运行良好,但有一个小问题!
论坛的所有 URL 都是相对的,并且不以/开头。我似乎无法改变这一点,因此需要修改下面的 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 + ");")
;
});
谢谢!
最佳答案
您可以像这样编写 not 选择器来获取 do 以 http
开头,但不包含“sitename.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);
});
});
关于jquery - 如何使用 jQuery 非选择器来选择相对 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2787651/