2011-12-09 83 views
5

我有什麼:環繞周圍的一些文字跨度的jQuery

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

我想要什麼:

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

我沒有訪問HTML標記,我想用jQuery來做到這一點, 喜歡的東西:

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

必須有選擇「我的文本」,即使它沒有類/ ID的一些方法

+1

您是否還希望添加class myClass?或者應該在「您擁有什麼」部分中也存在? –

+0

不,對不起,我的不好,更新的問題 – Purplefish32

回答

4

嘗試:

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

JS Fiddle demo

至於想加classul

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

JS Fiddle demo

+0

確實;我已經編輯它到當前的答案... =) –

+0

刪除我的評論。 – Chad

+0

謝謝,我會保持你的答案,它的乾淨和簡單。 – Purplefish32

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

JSFIDDLE DEMO

+1

+1 jQuery是新的Perl :) –

+0

你的答案已經足夠接近了,抱歉在我的問題中忘記'myClass',我已經更新了這個問題 – 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); 

老式的DOM救援。

+0

+1這將是我的下一個任務(但不要忘記添加課程,就像我之前所做的那樣)。 – RightSaidFred

+0

[這裏是一個小提琴](http://jsfiddle.net/Qxkba/2/)糟糕,我搞砸了,並將該類添加到錯誤的元素! – RightSaidFred

+0

@RightSaidFred你將className添加到了錯誤的ul;)[Fixed](http://jsfiddle.net/Qxkba/3/) – Raynos