jQuery用字符串值替换attr href

时间:2012-11-06 08:59:02

标签: jquery html string href attr

我尝试用一​​些DIV的ID替换一些href属性。

我有一个包含(例如)三个链接且没有href值的列表,如:

<ul id="Downloads">
    <li><a href="">Some content 1</a></li>
    <li><a href="">Some content 2</a></li>
    <li><a href="">Some content 3</a></li>
</ul>

我在同一页面上也有一些DIV,容器中有唯一的ID:

<div id="DownloadsContent">
    <div id="221">Some content</div>
    <div id="325">Some content</div>
    <div id="124">Some content</div>
</div>

我想获取三个DIV的ID并将它们设置为三个链接的href属性,如:

<li><a href="#221">Some content 1</a></li>
<li><a href="#325">Some content 2</a></li>
<li><a href="#124">Some content 3</a></li>

我尝试使用.map和.each函数,但是在我当前的尝试中,我得到了像<a href="221,325,124"></a>这样的链接 - 所以href属性被替换为整个字符串。

这是我的方法:

var id = $('#DownloadsContent > div').map(function() { return this.id }).get();

$.each(id,function() {
    $("#Downloads li a").attr('href', id);
});

2 个答案:

答案 0 :(得分:1)

您可以使用attr方法。

var $divs = $('#DownloadsContent > div');

$('#Downloads a').attr('href', function(i, c){
   return '#' + $divs.eq(i).attr('id')
})

http://jsfiddle.net/AG2LQ/

答案 1 :(得分:0)

您需要使用THIS进行迭代,并且每次都选择不同的(在本例中为i):

$.each(id,function(i) {
   $("#Downloads li a").eq(i).attr('href', this);
});

(编辑感谢评论)