Javascript jQuery解析HTML结果不符合预期
我有一个远程文件中的HTML字符串。现在我想用jQuery阅读一些元素。 外部HTML在字符串中Javascript jQuery解析HTML结果不符合预期,javascript,jquery,html,Javascript,Jquery,Html,我有一个远程文件中的HTML字符串。现在我想用jQuery阅读一些元素。 外部HTML在字符串中 <!doctype html> <html> <head> <meta charset="utf-8"> <title>test</title> <script src="jquery-1.11.1.min.js"></script>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="jquery-1.11.1.min.js"></script>
<script>
$(document).ready(function() {
var htmlString = '<!DOCTYPE html>' +
'<html>' +
'<head>' +
'<meta name="firstName" content="false">' +
'</head>' +
'<body>' +
'<div id="test1" class="test1" name="test1">test2</div>' +
'<div id="test2" class="test2" name="test2">test2</span>' +
'</body>' +
'</html>';
var $ = jQuery;
var html = $.parseHTML(htmlString);
//var html = htmlString;
var test1 = $("#test1", $(html)).attr("name");
var test2 = $(html).find("div[class='test2']").attr("name");
var test3 = $(html).attr("name");
console.log(html);
console.log('1: ' + test1); //undefined
console.log('2: ' + test2); //undefined
console.log('3: ' + test3); //firstName
});
</script>
</head>
<body>
</body>
</html>
测试
$(文档).ready(函数(){
var htmlString=''+
'' +
'' +
'' +
'' +
'' +
“测试2”+
“测试2”+
'' +
'';
var$=jQuery;
var html=$.parseHTML(htmlString);
//var html=htmlString;
var test1=$(“#test1”,$(html)).attr(“名称”);
var test2=$(html).find(“div[class='test2']”).attr(“name”);
var test3=$(html).attr(“名称”);
log(html);
console.log('1:'+test1);//未定义
console.log('2:'+test2);//未定义
console.log('3:'+test3);//firstName
});
有人能解释一下为什么我不能选择一个项目吗?
$。parseHTML
解析出头和体标记,因为当您在已经有头和体标记的DOM中插入某个东西时,通常不需要它们,因此您最终得到一个类似
[meta, div#test1.test1, div#test2.test2]
包含meta标记和两个div
由于div现在是根元素,它们不是任何元素的子元素,因此使用jQuery的find()
将不起作用,因为它只查找子元素
但是,使用filter()
将起作用
$(html).filter('.test2').attr("name");
或者,如果不确定元素是根元素还是某个元素的子元素,可以将元素数组附加到包装器元素,然后使用find()
$('',{html:html}).find('.test2').attr('name');
啊,那么。。。现在我明白了。非常感谢
$('<div />', {html : html}).find('.test2').attr('name');