jQuery获取每个li的第一个跨度的文本

时间:2013-04-29 11:37:43

标签: jquery

我想在不同的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中的每个值。

3 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:4)

使用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();

答案 2 :(得分:-1)

这里是jsfiddle来获取使用for循环的元素

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