2013-04-29 59 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()); 
    }); 
相關問題