如何替换所有<a> hrefs within div element?</a>

时间:2011-10-25 16:48:48

标签: javascript jquery replace href

例如,通过添加http://mysite.com?url= infront来替换div元素中的所有href。如果html是......

<div class="post-body">
<a href="http://www.google.com">google</a>
<a href="http://www.youtube.com">youtube</a>
<a href="http://www.facebook.com">facebook</a>
</div>

通过添加http://mysite.com?url= infront来替换每个href,以便html的结果将是......

<div class="post-body">
<a href="http://mysite.com?url=http://www.google.com">google</a>
<a href="http://mysite.com?url=http://www.youtube.com">youtube</a>
<a href="http://mysite.com?url=http://www.facebook.com">facebook</a>
</div>

5 个答案:

答案 0 :(得分:6)

使用jQuery.each

$('.post-body a').each(function () {
    var $this = $(this),
        href = $this.attr('href');
    $this.attr('href', "http://mysite.com/?url=" + href);
})

Example

答案 1 :(得分:1)

您可以直接使用.attr()方法

$('.post-body a').attr('href', function(i, currentValue){
   return 'http://mysite.com?url=' + currentValue;
});

http://jsfiddle.net/gaby/94Bf4/

演示

答案 2 :(得分:0)

使用jQuery的$.each方法:http://jsfiddle.net/bFEzt/

$.each($('.post-body a'),function() {
    $(this).attr('href',"http://domain.com/?url="+$(this).attr('href'));
});

答案 3 :(得分:0)

简单

$.each("a",function(index, elem){
    $(elem).attr('href','http://mysite.com?url=' + $(elem).attr('href'));
});

答案 4 :(得分:0)

您可以使用replace在一行代码中执行此操作:

$('div.post-body').html(
    $('div.post-body').html().replace(/href="/g,'href="http://mysite.com?url=') 
);