gpt4 book ai didi

javascript - jQuery parseHTML 结果不符合预期

转载 作者:可可西里 更新时间:2023-11-01 13:32:52 26 4
gpt4 key购买 nike

我有来自远程文件的字符串中的 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>

有人可以向我解释为什么我不能选择一个项目吗?

最佳答案

$.parseHTML 解析出 headbody 标签,因为当你将一些东西插入到已经有的 DOM 中时,通常不需要它们一个 headbody 标签,所以你最终得到一个看起来像这样的数组

[meta, div#test1.test1, div#test2.test2]

包含元标记和两个 div。

由于 div 现在是根元素,它们不是任何子元素,因此使用 jQuery 的 find() 将不起作用,因为它只能找到后代元素。

但是使用 filter() 会起作用

$(html).filter('.test2').attr("name");

或者如果您不确定元素是根元素还是某个元素的子元素,您可以将元素数组附加到包装元素,然后使用 find()

$('<div />', {html : html}).find('.test2').attr('name');

FIDDLE

关于javascript - jQuery parseHTML 结果不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25557020/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com