我想将 html 字符串解析为 jQuery 对象,然后通过 ID 查找元素。
我尝试了以下三种方法,但只有最后一种有效。我不知道为什么其他的不起作用?
var html = "<html><body><div id='main'></div></body></html>";
// Not work, return 0
console.log($(html).find('#main').length);
// Not work, return 0
console.log($($.parseHTML(html)).find('#main').length);
// Works, return 1
console.log($("<html/>").html(html).find('#main').length);
这是示例:http://jsfiddle.net/nbyofkam/2/ http://jsfiddle.net/nbyofkam/2/
It's 有记录的 http://api.jquery.com/jQuery/ :
当传入复杂的 HTML 时,某些浏览器可能不会生成完全复制所提供的 HTML 源的 DOM。如前所述,jQuery 使用浏览器的 .innerHTML 属性来解析传递的 HTML 并将其插入到当前文档中。在此过程中,某些浏览器会过滤掉某些元素,例如<html>
, <title>
, or <head>
元素。因此,插入的元素可能无法代表传递的原始字符串。
因此,$(html)
减少为"<div id="main"></div>"
。您可以通过登录来验证$(html)[0].outerHTML
.
所以你不能使用find
不包装它,这就是你所做的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)