JQuery, чтобы получить текст первого пролета каждого li

Я пытаюсь получить первое значение span под разными элементами li. Моя разметка HTML выглядит следующим образом:

<div class="mipartrel">
    <div class="k-multiselect-wrap k-floatwrap">
        <ul role="listbox" unselectable="on" class="k-reset">
            <li class="k-button">
                <span>bat</span>
                <span class="k-icon k-delete">delete</span>
            </li>
            <li class="k-button">
                <span>ball</span>
                <span class="k-icon k-delete">delete</span>
            </li>
        </ul>
    </div>
</div>

Я использовал следующий код jQuery, чтобы получить текст всех элементов span...

var getdata=$('.mipartrel ul li span').first().text();

... но я получаю только значение "bat". Мне нужно каждое значение из первого span каждого li.

Ответ 1

Метод first возвращает только первый согласованный элемент, вы можете использовать метод find:

var textArray = $('.mipartrel ul li').find('span:first').map(function(){
    return $(this).text();
}).get(); // ["bat", "ball"]

var textString = textArray.join(); // "bat, ball"

http://jsfiddle.net/s797E/

Или:

var getdata = $('.mipartrel ul li').find('span:first').text();

Ответ 2

Используйте селектор first-child, чтобы получить пролеты, которые являются первым потомком их родителя:

var getdata = $('.mipartrel ul li span:first-child').text();

Демо: http://jsfiddle.net/Guffa/38NN5/

Метод text получит текст из всех элементов как одну строку. Если вы хотите, чтобы он был массивом, вам нужно получить каждый текст отдельно:

var getdata = $('.mipartrel ul li span:first-child').map(function(){
  return $(this).text();
}).get();

Ответ 3

здесь jsfiddle, чтобы получить элементы, используемые для цикла

    $('ul.k-reset li').each(function(){
       var current = $(this).find('span:first');
        alert(current.text());
     });