2013-04-29 58 views
11

我试图在不同的li元素下获取span的第一个值。我的HTML标记是如下...jQuery获取每个li的第一个跨度的文本

<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"。我需要每li的第一个span的每个值。

+0

你可以看看这个的http:// API .jquery.com/jQuery.each/ – Darshan 2013-04-29 11:40:14

+0

试试这个var getdata = $('。mipartrel ul li span')。first()。html(); – visnu 2013-04-29 11:40:17

回答

13

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

谢谢。这工作,也是由逗号分隔的值这正是我想要的感谢 – user1001176 2013-04-29 11:43:53

+0

@ user1001176:请注意,结果是一个数组,而不是一个逗号分隔的字符串。如果将数组转换为字符串,它将以字符串形式返回数组中的字符串。 – Guffa 2013-04-29 11:45:08

+0

@Guffa感谢清除这:)这就是为什么我非常喜欢这个社区这么多的学习 – user1001176 2013-04-29 11:46:29

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

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

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