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

我有这样的结构:

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

如何使用JavaScript或jQuery获取文本作为数组?

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

我之后的计划是将其组装成一个string,可能使用.join(', ') ,并以如下格式获取:

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

…应该做的伎俩。 为了得到最终的输出结果, join()加上一些连接可以很好地完成:

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

没有冗余的中间arrays:

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

看到j​​sfiddle 演示

并在干净的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); 

kimstik接近,但不完全。

以下是如何做一个方便的一行:

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

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

只是为了全面回答,以下是您正在寻找的完整function:

 $.map( $('li'), function (element) { return $(element).text() }).join(', '); 
 var arr = new Array(); $('li').each(function() { arr.push(this.innerHTML); })