如何使用 jQuery 非选择器来选择相对 URL?
我正在编写一个小 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 + ");")
;
});
谢谢!
I'm working on a little jQuery script to add Google Analytics pageTracker onclick data to all relative URLs on my forum, allowing me to track clicks to external sites.
I don't want to add the onclick to internal links on forum.sitename or sitename, and I don't want to add them to any hrefs marked # or that start with /. My script below works nicely, but for one minor problem!
All of the forum's URLs are relative and don't start with /. I appear to have no way to change that, so need to modify the jQuery below to prevent it adding the onclick to links like as it currently does.
What I want to do, is to write a .not() function like .not("[href!^=http") to prevent jQuery from adding the onclick to any hrefs which do not start with http. However, .not() appears not to support this.
I'm new to jQuery and can't figure this out. Any pointers would be massively appreciated.
$(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 + ");")
;
});
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以像这样编写 not 选择器来获取确实以
http
开头但不包含“sitename.com”的链接:您可以在此处使用示例,这使用基于字符串的
:not()
选择器 和^=
属性starts-with 选择器 您已在使用和*=
属性包含 eelector。根据评论更新:
You can write the not selector like this to get the links that do start with
http
, but don't contain "sitename.com":You can play with an example here, this uses the string based
:not()
selector and the^=
attribute starts-with selector you're already using and the*=
attribute contains eelector.Update based on comments: