用jquery替换一堆href。需要代码改进

时间:2011-12-30 10:05:40

标签: javascript jquery href each attr

我尝试用jquery更改3个a-tags的href。 目前,我用普通的javascript做到了这一点。

var catNav = $('ul.nav'),
newLink = ['new1/','new2','nwe3/'];

catNav.attr('id','node');
var node =document.getElementById('node');
for(var i=0; i<3; i++){
node.childNodes[i].firstChild.href=newLink[i];
}

我想要你什么告诉我我是怎么做的

for(var i=0; i<3; i++){
    node.childNodes[i].firstChild.href=newLink[i];
}

用jquery。

这是一个例子 http://jsfiddle.net/HFj2D/1/

6 个答案:

答案 0 :(得分:2)

这应该做的全部事情:

var newLink = ['new1/','new2','nwe3/'];

$("ul.nav").attr('id', 'node').find('a').each(function(index, el) {
    this.href = newLink[index];
});

理想情况下,您应该已经在<ul>标记上拥有ID。

答案 1 :(得分:1)

只需使用attr [docs]

$('ul.nav > li').slice(0,3).children('a:first-child').attr('href', function(i) {
    return newLink[i];
});

我也尝试使用与纯JavaScript相同的方式选择元素,即前三个列表条目和第一个a元素。

也就是说,如果您的数组包含与菜单中a个元素一样多的新链接,那么您可以将选择简化为:

$('ul.nav a').attr('href', /*...*/);

DEMO

答案 2 :(得分:1)

这将找到catNav节点下的所有链接(您已经拥有该节点),并为每个节点分配新的href。

catNav.find('a').each(function(index) { $(this).attr('href', newLink[index]); }) 

答案 3 :(得分:0)

那将是:

for(var i=0; i<3; i++){
    $(node, ':nth-child(' + i + ')').children().first().attr('href', newLink[i]);
}

答案 4 :(得分:0)

在这里:http://jsfiddle.net/HFj2D/2/

$.each($("#node").find("a"), function(i, link){
  $(link).attr("a", newLink[i]);
});

答案 5 :(得分:0)

$(node).find('li a').each(function() { $(this).attr('href', 'newlink'); });