使用jquery在许多链接中更改href

使用jquery在许多链接中更改href,jquery,Jquery,我正试图更改从谷歌搜索返回的URL,因为有时候谷歌喜欢打电话给家里询问我的浏览习惯(唉,这曾经是雅虎的罪恶)S我从似乎有效的jquery中得到一个错误,我想知道修复方法是什么 错误代码是(神秘的,因为我在ChromeV8中): TypeError:无法调用未定义的方法“split” 以下是消息来源: $("a[href^='http://www.google.com/url'], a[href^='www.google.com/url'], a[href^='/url?'], a[href^='

我正试图更改从谷歌搜索返回的URL,因为有时候谷歌喜欢打电话给家里询问我的浏览习惯(唉,这曾经是雅虎的罪恶)S我从似乎有效的jquery中得到一个错误,我想知道修复方法是什么

错误代码是(神秘的,因为我在ChromeV8中):
TypeError:无法调用未定义的方法“split”

以下是消息来源:

$("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);
});

我已经验证了我得到的错误在第一次拆分上,而不是部分参数上的错误。

每个
回调(您的
a
)的第一个参数是索引,而不是元素

您应该将回调传递给
attr
,而不是
每个

$("a[...]").attr("href", function(index, oldValue) {
    return something;
});

您使用的回调函数的第一个参数实际上是用于
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);
});

尝试在为该字符串中的每个
a
元素调用的
$(this)
函数(a)
中使用
$(this)
而不是
$(a)
?除了jQuery对象之外,不应该对任何对象使用
.each()
方法。
split()
返回的数组不是这样的对象。使用
$.each($(a).attr('href').split('&'),function(i,part){…})取而代之。@ThiefMaster-yea必须使用
来。。。splits.length
进行迭代:P也忘记了
$。每个
都很好而且更好(imo)。只是不要混淆
$()。每个
$。每个
。看,如果我有rep:d,我会投票支持你,它是索引,我在一个对象方法中,所以我可以在没有任何参数设置的情况下使用它。