2013-04-29 13 views
11

Próbuję uzyskać pierwszą wartość span pod różnymi elementami li. Moje znaczniki HTML jest następujący ...jQuery, aby uzyskać tekst pierwszego zakresu każdego 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> 

Użyłem następujący kod jQuery uzyskać tekst wszystkich span elementów ...

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

... ale ja dostaję tylko wartość "bat". Potrzebuję każdej wartości od pierwszego span każdego li.

+0

może trzeba spojrzeć na ten http: // api .jquery.com/jQuery.each/ – Darshan

+0

Wypróbuj ten plik getdata = $ ('. mipartrel ul li span'). first(). html(); – visnu

Odpowiedz

13

Sposób first zwraca tylko pierwszą dopasowanego elementu, można użyć metody 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/

czyli

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

dziękuję. to działało, a także wartości są oddzielone przecinkiem, dokładnie to, co chciałem, dzięki – user1001176

+0

@ user1001176: Zauważ, że wynikiem jest tablica, a nie ciąg znaków oddzielonych przecinkiem. Jeśli przekonwertujesz tablicę na łańcuch znaków, zwróci ona ciągi znaków z tablicy w postaci ciągu oddzielanego przecinkami. – Guffa

+0

@Guffa dzięki wyczyszczenie tego :) To dlatego kocham tę społeczność tak bardzo, aby dowiedzieć się – user1001176

4

pomocą przełącznika first-child uzyskać przęseł to są pierwsze dzieci ich rodziców:

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

Demo: http://jsfiddle.net/Guffa/38NN5/

Sposób text dostanie tekst z wszystkimi elementami w postaci pojedynczego łańcucha. Jeśli chcesz go jako tablicę, czego potrzebujesz, aby każdy tekst oddzielnie:

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

tutaj jest jsfiddle dostać elementy za pomocą pętli for

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