2011-12-09 18 views
5

Co mam:Wrap przęsło wokół jakiegoś tekstu w jQuery

<ul id="myId"> 
    <li> 
     My text 
     <ul class="myClass"> 
      <li>blahblahblah</li> 
     </ul> 
    </li> 
</ul> 

Czego chcę:

<ul id="myId"> 
    <li> 
     <span>My text</span> 
     <ul class="myClass"> 
      <li>blahblahblah</li> 
     </ul> 
    </li> 
</ul> 

nie mam dostępu do znaczników HTML, a ja chce to zrobić z jQuery , Coś jak:

$('.myClass').get_the_text_ubove().wrap('<span>'); 

musi być jakiś sposób, wybierając „Mój tekst”, mimo że nie ma klasy/ID

+1

Czy chcesz dodać klasę 'myClass', czy też powinna ona istnieć również w sekcji" co masz "? –

+0

Nie, przepraszam moje złe, zaktualizowane pytanie – Purplefish32

Odpowiedz

4

Spróbuj:

$('#myId > li').each(
    function(){ 
     $(this.firstChild).wrap('<span></span>'); 
    }); 

JS Fiddle demo.

W odniesieniu do chcąc dodać class do ul:

$('#myId > li').each(
    function(){ 
     $(this.firstChild).wrap('<span></span>'); 
     $(this).find('ul').addClass('myClass'); 
    }); 

JS Fiddle demo.

+0

Rzeczywiście; Zmodyfikowałem go do bieżącej odpowiedzi ... =) –

+0

Usunięto mój komentarz. – Chad

+0

Dzięki, zamierzam zachować odpowiedź, jest czysta i prosta. – Purplefish32

6
$($('#myId ul').addClass('myClass')[0].previousSibling).wrap('<span>'); 

JSFIDDLE DEMO

+1

+1 jQuery to nowy Perl :) –

+0

Twoja odpowiedź była wystarczająco bliska, przepraszam, że zapomniałem 'myClass' w moim pytaniu, zaktualizowałem pytanie – Purplefish32

3
var ul = document.getElementById("myId"); 
var li = ul.firstElementChild; 
var text = li.firstChild; 
var ul = li.childNodes[1]; 
ul.classList.add('myClass'); 
var span = document.createElement("span"); 
span.textContent = text.data; 
li.replaceChild(span, text); 

Staroświecki DOM na ratunek.

+0

+1 To było moje następne zadanie (ale nie zapomnij dodać klasę, tak jak na początku). – RightSaidFred

+0

[Tutaj jest skrzypce] (http://jsfiddle.net/Qxkba/2/) Ups, wkręciłem go i dodałem klasę do niewłaściwego elementu! – RightSaidFred

+0

@RightSaidFred dodałeś className do niewłaściwego ul;) [Fixed] (http://jsfiddle.net/Qxkba/3/) – Raynos