我正在尝试更改我从谷歌搜索回来的网址,因为有时谷歌喜欢打电话回家我的浏览习惯(叹息曾经是雅虎的邪恶)。 :S我从一个看似有效的jquery得到一个错误,想知道修复是什么?
错误代码是(神秘的,因为我在chrome v8中):
TypeError: Cannot call method 'split' of undefined
这是来源:
$("a[href^='http://www.google.com/url'], a[href^='www.google.com/url'], a[href^='/url?'], a[href^='url?']").each(
function(a) {
var url = "";
$(a).attr("href").split("&").each(function (part) {
if (part.match(/^url\=/)) {
url = unescape( (part.split("=",2))[1] );
}
});
$(a).attr("href", url);
});
我已经确认我得到的错误是第一次拆分,而不是部分参数上的错误。
答案 0 :(得分:1)
each
回调的第一个参数(您的a
)是索引,而不是元素。
而不是each
,您应该将回调传递给attr
:
$("a[...]").attr("href", function(index, oldValue) {
return something;
});
答案 1 :(得分:1)
您正在使用的回调函数的第一个参数实际上是用于each()
的数组的索引。试试这个:
$("a[href^='http://www.google.com/url'], a[href^='www.google.com/url'], a[href^='/url?'], a[href^='url?']").each(
function() {
var url = "";
$(this).attr("href").split("&").each(function (part) {
if (part.match(/^url\=/)) {
url = unescape( (part.split("=",2))[1] );
}
});
$(this).attr("href", url);
});