2016-11-28 22 views
2

環顧四周,找不到任何有助於裹在HTML字符串中的所有圖像與jQuery

我需要與包裹的圖像替換字符串中的所有圖像,然後用匹配的href返回一個字符串的函數。

content = "<html>"; 
var $content = $(content); 
$('img', $content).each(function() { 
     $(this).html().replace($(this).html(),'<a href="' + $(this).attr('src') + '" target="_blank" class="thumbnailLink"><img src="' + $(this).attr('src') + '" style="' + $(this).attr('style') +'"></a>')      
    }); 
    return $content.html(); 
+0

jQuery方法不會在一根繩子上的工作,但是,如果你可以追加()字符串的身體,一個隱藏的元素,而簡單包()的圖像,你可以很容易地修改HTML( )並返回字符串? (如果我理解你的請求,不知道背景情況,無論如何) – sinisake

+0

@nevermind你低調的請求,是的,這可能是這裏的問題。 var $ content = $(content);不創建一個可以操縱的dom元素? –

+0

@Jermy Nelson,它創建jQuery對象,是的,但不是DOM元素(我認爲)...這是(可能)解決方法:https://jsfiddle.net/g4ufscha/ – sinisake

回答

0

您可以設置html而不是閱讀並替換它。

$('img', $content).each(function() { 
    var src = $(this).attr('src'); 
    var style = $(this).attr('style'); 
    $(this).html('<a href="' + src + '" target="_blank" class="thumbnailLink"><img src="' + src + '" style="' + style +'"></a>'); 
}); 
+0

抱歉,這不起作用。返回$ content.html()將只有1圖像 –

+0

@JeremyNelson上面的代碼片段應該在'$ .each'塊內 –

+0

是的,我發現$(this).html在任何時候都是空的 –

1

這裏是可能的解決方案,希望它能爲你工作。

content = '<div class="img"><img src="fjords.jpg" alt="Fjords" width="300" height="200"><div class="desc">Add a description of the image here</div></div><div class="img"><img src="forest.jpg" alt="Forest" width="300" height="200"><div class="desc">Add a description of the image here</div></div><div class="img"><img src="lights.jpg" alt="Northern Lights" width="300" height="200"><div class="desc">Add a description of the image here</div></div><div class="img"><img src="mountains.jpg" alt="Mountains" width="300" height="200"><div class="desc">Add a description of the image here</div></div>'; 
html = $(content); 


$('img',html).each(function() { 
$(this).wrap('<a href="' + $(this).attr('src') + '" target="_blank" class="thumbnailLink"> </a>');  

    }); 
final=[]; 
$.each(html, function(index, value) { 
    final.push($(value).html()); 
}); 

console.log(final.join('')); 

所以,$裏面的內容簡單包裝圖像,然後遍歷對象,從價值做出jQuery對象,獲取HTML(),並最終輸出字符串。

DEMO>https://jsfiddle.net/vaxL8d9p/1/