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());
});