在jQuery中包含一些文本的跨度

时间:2011-12-09 16:21:53

标签: 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>');

必须有某种方式选择“我的文字”,即使它没有课程/身份

3 个答案:

答案 0 :(得分:6)

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

<强> JSFIDDLE DEMO

答案 1 :(得分:4)

尝试:

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

JS Fiddle demo

关于想要将class添加到ul

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

JS Fiddle demo

答案 2 :(得分: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救援。