我有一些jQuery代码没有按预期工作。
$('a[href^="http://"]').not('[href^="http://mydomain.com"], [href^="http://itunes.apple.com"]').click(function (e) {
e.preventDefault();
console.log("external: " + this.getAttribute('href'));
var url = this.getAttribute('href');
foo.track(
"External",
{ 'URL': url },
function (url) {
location.href = url
}
);
});
对于此示例,我正在跟踪我的域中的所有外部点击,但iTunes应用商店除外。假设foo.track()
是我用于跟踪某些事件以进行报告的第三方方法。它的最后一个参数是一个匿名函数,一旦跟踪调用成功返回就会执行。
上面的代码由于某种原因试图将所有内容导航到http://mydomain.com/1
。但是,console.log
语句成功记录了预期值。好像url
变量没有引用我期望的值。我也尝试用location.href = url
替换window.location = url
,但我得到的结果相同。
我做错了什么?
答案 0 :(得分:1)
只需从导航功能中删除参数即可。像这样:
$('a[href^="http://"]').not('[href^="http://mydomain.com"],
[href^="http://itunes.apple.com"]').click(function (e) {
e.preventDefault();
console.log("external: " + this.getAttribute('href'));
var url = this.getAttribute('href');
foo.track("External", { 'URL': url }, function (/*url*/) { location.href = url });
});