如何通过jQuery抓住从HTML图像标记

问题描述:

所以我有一个在变量entry.content返回这样的数据集:如何通过jQuery抓住从HTML图像标记

<p style="float:right;margin:0 0 10px 15px;width:240px"> <img src="http://citysportsblog.com/wp-content/uploads/2011/09/RagnarNE.jpg" width="240"> </p><p>Have you heard of the epic adventure that is the</p> 

如何将我刚刚从这个抢IMG SRC网址通过jquery?

假设你只有一个图像: var sourceUrl = $('img')。attr('src');
var sourceUrl = $(entry.content).find('img').attr('src'); 
+0

但看到上面的数据正在作为纯文本发送。不像html – raeq

你应该给你的形象的标识和使用id选择器(你知道它只是元素你得到的方式)。您可以运行在纯文本(不添加到DOM)查询代码如下:

string plainText = '<p style="float:right;margin:0 0 10px 15px;width:240px"> <img id="theImg" src="http://citysportsblog.com/wp-content/uploads/2011/09/RagnarNE.jpg" width="240"> </p><p>Have you heard of the epic adventure that is the</p>' 

var url = $(plainText).find('#theImg').attr('src'); 

或者,如果你不能改变它,它只是在字符串中的一个图像多数民众赞成:

var url = $(plainText).find('img').attr('src'); 
+0

正如提问者所说的那样,你的jQuery代码行可行;然而,在'#theImg'上使用'find'将不起作用,因为它只遍历_descendants_。 – Dennis

如果你没有任何其他图像的大小相同:

$('img[width="240"]').attr('src'); 

如果是我,我只是正则表达式替换来从变量来源:

entry.content = entry.content.replace("/src=\"(.+?)\"/i", "\1");

(虽然你不想使用。+;我只是懒得找到可能的URL字符)。如果你不知道entry.content会以这样的形式,那么我将它添加到DOM在一个隐藏的DIV,并从那里来源:

var hiddenDiv = $(document.body).add("div"); 
hiddenDiv.css("display", "none"); 
hiddenDiv.html(entry.content); 
entry.content = hiddenDiv.find("img")[0].src; 

诚然,这是一个更为危险的方法,因为它让你开放给XSS,但如果你相信源,你可以做到。

+0

虽然,如果Shawn的方法(上面)不将它添加到DOM,那么它会更安全。 –