使用选择器而不是迭代获取文本值数组?

use*_*114 40 jquery

我有一些HTML像:

<ul id='foo'>
    <span><a>hello 1</a></span>
    <span><a>hello 2</a></span>
    <span><a>hello 3</a></span>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想得到一个元素的所有文本值的数组,如:

var texts = [ 'hello 1', 'hello 2', 'hello 3' ];
Run Code Online (Sandbox Code Playgroud)

我试图迭代每一个,在jQuery中是否有某种方法可以使用选择器抓取所有这些?

Nic*_*ver 76

你可以这样使用.map():

var myArray = $("#foo span a").map(function() {
                 return $(this).text();
              }).get();
Run Code Online (Sandbox Code Playgroud)

你可以在这里测试一下.

  • @Peter - 它基本上是调用 `.toArray()` 来获得一个干净的数组,没有额外的 jQuery 属性。 (2认同)

小智 9

或者比接受的答案稍微短一些:

$.map($("#foo span a"), $.text)
Run Code Online (Sandbox Code Playgroud)


jma*_*777 6

试试这个:

$('#foo span a').map(function() { return $(this).text(); }).get();
Run Code Online (Sandbox Code Playgroud)