как заменить все <a>hrefs внутри элемента div? - PullRequest
2 голосов
/ 25 октября 2011

Замените все href внутри элемента div, добавив, например, http://mysite.com? Url = infront.если 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>

, замените каждый href, добавив http://mysite.com? url = infront, чтобы результат 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 ]

6 голосов
/ 25 октября 2011

Использование jQuery.each

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

Пример

1 голос
/ 25 октября 2011

Вы можете напрямую использовать метод .attr()

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

Демо на http://jsfiddle.net/gaby/94Bf4/

0 голосов
/ 25 октября 2011

Вы можете сделать это в одной строке кода с помощью replace:

$('div.post-body').html(
    $('div.post-body').html().replace(/href="/g,'href="http://mysite.com?url=') 
);
0 голосов
/ 25 октября 2011

просто

$.each("a",function(index, elem){
    $(elem).attr('href','http://mysite.com?url=' + $(elem).attr('href'));
});
0 голосов
/ 25 октября 2011

Используйте метод jQuery $.each: http://jsfiddle.net/bFEzt/

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