У меня есть все теги html, как показано ниже.
var description = "<div class="header"> <div class="logo"> <a href="http://domain.com"> <img src="devimg/logo.png" class="showHome" alt="ssfdf" height="80px" /> </a> </div><div><img class="img1" src="devimg/sss.png"></img></div><div><img class="img2" src="devimg/.png"></img></div> </div>"
У меня есть html-строка, как указано выше, вы хотите перебрать все теги img и добавить некоторый домен в src url, например <img class="img1" src="www.otherdomain.com/devimg/sss.png">
как это хотите добавить домен для каждый тег img. После замены все хотят снова получить целые html-теги с недавно добавленным доменом для тегов img.
Как я могу сделать это в jQuery?
этот код удовлетворил мое требование. data - строка html.
var temp = document.createElement('div');
data = data.replace(/src=/gi, "tempsrc=");
temp.innerHTML = data;
$(temp).find( 'img' ).each(function() {
var oldSrc = $(this).attr("tempsrc");
$(this).removeAttr("tempsrc");
if(oldSrc){
$(this).attr("src", "clouddomain.com/"+oldSrc);
}
});
Если вы добавляете какой-либо элемент html content в dom, он загружает ресурсы, такие как изображения из домена ur, принимая в качестве относительного пути. В приведенном выше коде заменяется некоторый временный атрибут, а затем добавляется к одному элементу dom. затем заменяя облачный url.
Вы должны проходить через каждый тег img, получить src, а затем изменить src на свой тег img.
var otherDomain='www.otherdomain.com';
$('img').each(function(){
$(this).attr('src', otherDomain + '/' + $(this).attr('src'));
});
edit: кто-то был быстрее..
Я думаю, что Гай уже разместил решение с заменой строки новым доменом в атрибуте src. Вы можете использовать regex или заменить атрибут src в теге img следующим образом:
var otherDomain = 'www.otherdomain.com';
description = description.replace('src="', 'src="' + otherDomain);
Это ответ, который вы искали?
Если это фактически часть DOM, а не строка с jQuery, вы можете запускать каждую из всех тегов img и изменять атрибут src, что-то вроде этого
$('img').each(function() {
$(this).attr('src', 'http://otherdomain.com' + $(this).attr('src'));
});
jsfiddle: http://jsfiddle.net/zVgpV/
Если это строка, которую вы должны были бы повторно использовать, ваше Regex будет чем-то вроде этого
str.replace(/src="(.*)"/, 'src="http://otherdomain.com/$1"')
"
), чтобы обернуть вашу строку HTML (при условии, что пропуск кавычек был опечаткой). Если эти кавычки отсутствуют в вашем реальном коде, это довольно серьезная синтаксическая ошибка, которую необходимо исправить.