在jQuery中获取列表元素内容的数组

时间:2008-10-29 14:32:54

标签: javascript jquery

我有这样的结构:

<ul>
  <li>text1</li>
  <li>text2</li>
  <li>text3</li>
</ul>

如何使用javascript或jQuery将文本作为数组?

['text1', 'text2', 'text3']

我的计划是将它组装成一个字符串,可能使用.join(', '),并以这样的格式获取它:

'"text1", "text2", "text3"'

6 个答案:

答案 0 :(得分:135)

var optionTexts = [];
$("ul li").each(function() { optionTexts.push($(this).text()) });

......应该做的伎俩。要获得您正在寻找的最终输出,join()加上一些连接将很好地完成:

var quotedCSV = '"' + optionTexts.join('", "') + '"';

答案 1 :(得分:69)

没有冗余的中间数组:

arr = $('li').map(function(i, el) {
    return $(el).text();
}).get();

请参阅jsfiddle demo

答案 2 :(得分:14)

在干净的javascript中:

var texts = [], lis = document.getElementsByTagName("li");
for(var i=0, im=lis.length; im>i; i++)
  texts.push(lis[i].firstChild.nodeValue);

alert(texts);

答案 3 :(得分:14)

kimstik很接近,但并不完全。

以下是如何在方便的单行中进行的操作:

$.map( $('li'), function (element) { return $(element).text() });

这是jQuery的map函数的完整文档,它非常方便:http://api.jquery.com/jQuery.map/

完全回答,这是您正在寻找的完整功能:

$.map( $('li'), function (element) { return $(element).text() }).join(', ');

答案 4 :(得分:7)

var arr = new Array();

$('li').each(function() { 
  arr.push(this.innerHTML); 
})

答案 5 :(得分:0)

您可以执行以下操作。 一行代码就足够了

  • let array = $('ul>li').toArray().map(item => $(item).html());
  • 获取感兴趣的元素

    1. 生孩子

    2. 从toArray()方法获取数组

    3. 过滤出所需的结果

let array = $('ul>li').toArray().map(item => $(item).html());
console.log(array);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
  <li>text1</li>
  <li>text2</li>
  <li>text3</li>
</ul>