2011-10-25 65 views
2

例如,通過添加http://mysite.com?url=來替換div元素中的所有href。如果HTML ...如何在div元素內全部替換<a> hrefs?

<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=盈這樣的HTML的結果將是相互取代的href ...

<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> 

回答

6

使用jQuery.each

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

Example

0

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

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

總是緩存到'$(本)引用一個好主意' –

+0

在這種情況下,沒有使用'$(這)'和緩存版本之間沒有速度差。 –

+0

有,因爲你調用'$(this)'兩次.. –

0

簡單

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

更新你的選擇器,因爲這將改變頁面中的所有鏈接.OP正在要求限制'div.post-body'元素內部的變化。 –

0

.attr()方法

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

演示你可以用replace爲此在一行代碼:

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

***問題1:*** multiple'div .post-body'將被第一個替換。 ***問題2:***它會替換帖子的實際內容,如果它們包含'href =「' –

+0

呃,這不是我的第一選擇,只是試圖想想新的東西。:-) – Blazemonger