1
4

5 回答 5

5

第二个参数是 DOM 元素,不是 jQuery 元素,a$(a)

function SetUrlParams() {
    $("#sidebarItems > li > a").each(function(idx, a) {
        $(a).attr("href", "MyURLOfChoice");
    });
}​

或者离开 jQuery 来完成这个简单的任务:

function SetUrlParams() {
    $("#sidebarItems > li > a").each(function(idx, a) {
        a.href = "MyURLOfChoice";
    });
}​

请注意,您可以使用this而不是访问 DOM 元素a

于 2012-05-07T15:26:02.233 回答
5

试试这个 wherethis指的是匹配集中的每个锚元素。

 function SetUrlParams() {
    $("#sidebarItems > li > a").each(function(){
       this.href = "MyURLOfChoice";
    });
 }

请注意,在您的代码a中指的是 dom 元素,因此如果您想保留代码,则应在调用任何 jQuery 方法之前将其转换为 jQuery 对象。

于 2012-05-07T15:26:10.510 回答
3
$('#sidebaritems > li > a').each( function(){
    this.href = newURL;
});
于 2012-05-07T15:27:38.840 回答
2

传递给函数的第二个参数each将是 DOM 元素,而不是 jQuery 对象。您需要使用$(a),或者也$(this)可以使用。

于 2012-05-07T15:27:25.377 回答
2

我对此进行了测试,它在这里工作

$("#sidebarItems > li > a").each(function (idx, a) {
        $(a).attr("href", "MyURLOfChoice");
    });

似乎一个参数是一个 HtmlElement,没有被 jquery 包装

于 2012-05-07T15:34:25.817 回答