Получить массив содержимого элемента списка в jQuery - PullRequest
97 голосов
/ 29 октября 2008

У меня есть такая структура:

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

Как использовать javascript или jQuery для получения текста в виде массива?

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

Мой план после этого состоит в том, чтобы собрать его в строку, возможно, используя .join(', '), и получить его в таком формате:

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

Ответы [ 6 ]

135 голосов
/ 29 октября 2008
var optionTexts = [];
$("ul li").each(function() { optionTexts.push($(this).text()) });

... должен сделать свое дело. Чтобы получить конечный результат, который вы ищете, join() плюс некоторая конкатенация будет хорошо работать:

var quotedCSV = '"' + optionTexts.join('", "') + '"';
69 голосов
/ 04 марта 2011

Без резервных промежуточных массивов:

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

См. Jsfiddle Демо

14 голосов
/ 22 сентября 2011

Кимстик был близко, но не совсем.

Вот как это сделать в удобном однострочном режиме:

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

Вот полная документация для функции карты jQuery, она очень удобна: http://api.jquery.com/jQuery.map/

Чтобы ответить полностью, вот полная функциональность, которую вы искали:

$.map( $('li'), function (element) { return $(element).text() }).join(', ');
14 голосов
/ 29 октября 2008

И в чистом 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);
7 голосов
/ 29 октября 2008
var arr = new Array();

$('li').each(function() { 
  arr.push(this.innerHTML); 
})
0 голосов
/ 20 февраля 2019

Вы можете сделать следующее. одной строки кода будет достаточно

  • 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...