Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery解析HTML结果不符合预期_Javascript_Jquery_Html - Fatal编程技术网

Javascript 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>

我有一个远程文件中的HTML字符串。现在我想用jQuery阅读一些元素。 外部HTML在字符串中

<!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');