如何获得 JQuery 元素的 html 内容的数组?
How can I have an array of the html content of a JQuery element?
我想要一系列元素的内部html。这是我试过的:
slides = $("#slides p");
它给了我一系列对象,但我想要每个对象的原始 html!我试过 $("#slides p").html()
但它给出了第一段。
您可以获取集合,将其转换为数组 .toArray
and then use .map
以对其进行迭代并获取每个项目的内部 HTML。
const ptext = $('#slides p').toArray().map(p => p.innerHTML);
console.log(ptext);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="slides">
<p>Peter</p>
<p>Ray</p>
<p>Egon</p>
<p>Winston</p>
</div>
这将为您提供一个字符串数组。每个字符串元素包含一个段落的 innerHTML:
slides = $.makeArray($("#slides p").map(p=>p.innerHTML));
由于 .map()
仍然 return 一个 jquery 对象,makeArray()
将其转换为数组。
根据 documentation page,.html()
只有 returns 您的选择器匹配的集合中第一个元素的内容。
如果您有多个 p
元素并且您需要每个元素的内容,那么您需要迭代它们:
var slides = $("#slides p");
slides.each(function(i, el) {
console.log(el.innerHTML);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="slides">
<p>A</p>
<p>B</p>
<p>C</p>
<p>D</p>
</div>
我想要一系列元素的内部html。这是我试过的:
slides = $("#slides p");
它给了我一系列对象,但我想要每个对象的原始 html!我试过 $("#slides p").html()
但它给出了第一段。
您可以获取集合,将其转换为数组 .toArray
and then use .map
以对其进行迭代并获取每个项目的内部 HTML。
const ptext = $('#slides p').toArray().map(p => p.innerHTML);
console.log(ptext);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="slides">
<p>Peter</p>
<p>Ray</p>
<p>Egon</p>
<p>Winston</p>
</div>
这将为您提供一个字符串数组。每个字符串元素包含一个段落的 innerHTML:
slides = $.makeArray($("#slides p").map(p=>p.innerHTML));
由于 .map()
仍然 return 一个 jquery 对象,makeArray()
将其转换为数组。
根据 documentation page,.html()
只有 returns 您的选择器匹配的集合中第一个元素的内容。
如果您有多个 p
元素并且您需要每个元素的内容,那么您需要迭代它们:
var slides = $("#slides p");
slides.each(function(i, el) {
console.log(el.innerHTML);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="slides">
<p>A</p>
<p>B</p>
<p>C</p>
<p>D</p>
</div>