如何参考<a> within <li> with jQuery</li></a>

时间:2012-05-07 15:24:38

标签: javascript jquery

我想用新网址替换列表中的HREF

我有这样的事情:

<ul id="sidebarItems">
   <li><a href="/PartBasicInfo/XX">Part Basic Info</a></li>
   <li><a href="/SupplierContracts/XX">Supplier Contracts</a></li>
</ul>

我正在尝试这个(我知道有很多方法可以做到这一点),但没有运气。有什么想法吗?

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

5 个答案:

答案 0 :(得分: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而不是a来访问DOM元素。

答案 1 :(得分:5)

尝试使用this引用匹配集中的每个锚元素。

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

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

答案 2 :(得分:3)

$('#sidebaritems > li > a').each( function(){
    this.href = newURL;
});

答案 3 :(得分:2)

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

答案 4 :(得分:2)

我对此进行了测试,它正在运行here

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

看来参数是一个HtmlElement,没有被jquery

包装