3

使用 jQuery 从文本创建新的 DOM 元素。

例子:

jQuery('<div><img src="/some_image.gif"></img></div>');

执行此语句时,它会导致浏览器向服务器请求文件“some_img.gif”。

有没有办法执行此语句,以便可以从 DOM 遍历中使用生成的 jQuery 对象,但实际上不会导致浏览器通过请求图像和其他引用内容来访问服务器?

例子:

var jquery_elememnts = jQuery('<div><img class="a_class" src="/some_image.gif"></img></div>');
var img_class = jquery_elememnts.find('img').attr('class');

我现在唯一的想法是使用正则表达式从图像元素和其他将触发浏览器请求的东西中删除所有“src”标签,然后再使用 jQuery 来评估 HTML。

如何使用 jQuery 来评估 HTML,而不触发浏览器向服务器请求评估的 HTML 中的引用内容?

谢谢!

4

4 回答 4

5

如果你用正则表达式的方式,也许是一个简单的方式

    htmlString.replace(/[ ]src=/," data-src=");

会做这项工作吗?

所以不要寻找:

    jquery_elememnts.find('img').attr('src');

你将不得不寻找:

    jquery_elememnts.find('img').data('src');
于 2012-09-09T21:35:55.780 回答
2

那是不可能的。当浏览器加载一个 HTML 片段时,例如一个包含 的 HTML 片段,img它通过 引用另一个资源src,它会尝试获取它。

但是,如果您只需class要从 中获取属性,则img可以使用$.parseXML()来获取XMLDocument,然后对其进行处理以获取所需的属性。这样,将永远不会加载 HTML 片段,因此不会获取图像:

var jquery_elememnts = $.parseXML('<div><img class="a_class" src="http://4.bp.blogspot.com/-B6PMBqTyqpk/UC7syX2eRLI/AAAAAAAABL0/SEoLWoxgApo/s1600/google10.png"></img></div>');
var img = jquery_elememnts.getElementsByTagName("img")[0];
var img_class = img.getAttribute("class");

演示

于 2012-09-09T19:27:22.753 回答
1

您可以parseXML在 jQuery 中使用。

var elements = jQuery.parseXML('<div><img class="a_class" src="/some_image.gif"></img></div>');
var img_class = $(elements).find('img').attr('class');
alert(img_class);

该字符串应该是一个完美的 XML。这是我用于类似目的的解决方法,但不知道这是否能解决您的问题。

于 2012-09-09T19:46:23.767 回答
1
var jquery_elememnts = (new DOMParser()).parseFromString('<div><img class="a_class" src="/some_image.gif"></img></div>', 'text/html'); 
var img_class = jQuery(jquery_elememnts).find('img').attr('class');
于 2015-08-31T08:20:22.510 回答