用jquery改变许多链接中的href

时间:2011-05-01 16:45:20

标签: jquery

我正在尝试更改我从谷歌搜索回来的网址,因为有时谷歌喜欢打电话回家我的浏览习惯(叹息曾经是雅虎的邪恶)。 :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);
});

我已经确认我得到的错误是第一次拆分,而不是部分参数上的错误。

2 个答案:

答案 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);
});