gpt4 book ai didi

javascript - jquery.html() 从字符串加载时只返回第一个文本

转载 作者:太空狗 更新时间:2023-10-29 16:35:51 25 4
gpt4 key购买 nike

假设一个 jquery 对象可以从字符串初始化。这在处理 ajax 结果时经常发生,即我正在尝试复制 http://api.jquery.com/jQuery.post/

但是,我看到了奇怪的行为:

function test() {
var content = $("<html><body><div>hello</div><div>world</div></body></html>");
alert("content.text() = " + content.text());
alert("content.html() = " + content.html());
}

第一个警报显示:content.text() = helloworld

第二个警报显示:content.html() = hello

这里发生了什么?

解决方案

谢谢大家的解释。我最后添加了另一层 <div>有一个 child <body> ,如

<html>
<body>
<div> <=== added
<div>hello</div>
<div>world</div>
</div>
</body>
</html>

最佳答案

当解析包含 body 元素的 HTML 片段时,浏览器通常(jQuery 也是如此)会忽略除 body 元素之外的所有内容。所以你所拥有的最终等同于:

var content = $("<div>hello</div><div>world</div>");
alert("content.text() = " + content.text());
alert("content.html() = " + content.html());

您最终得到一个包含两个元素的 jQuery 对象:div 元素。

在 jQuery 中,访问器函数(htmlvalcss 等)通常只使用first 当您将它们用作 getter 时集合中的元素,这就是 html正在做上面的事情。 text是 jQuery 中的一个不寻常的访问器函数:它为您提供集合中所有元素的组合文本,而不仅仅是第一个。

我们可以在文档中看到这一点,但它仍然令人惊讶。来自 html :

Get the HTML contents of the first element in the set of matched elements or set the HTML contents of every matched element.

来自 text :

Get the combined text contents of each element in the set of matched elements, including their descendants, or set the text contents of the matched elements.

(我在这两种情况下都强调了。)

关于javascript - jquery.html() 从字符串加载时只返回第一个文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30012106/

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