1

我有嵌套列表,我需要为每个项目设置样式。通常我会做这样的事情:

$('#myList li').addClass('myClass');

但是,因为它们是嵌套的,我想我只需要设置文本样式。我如何用 jQuery 做到这一点?我偷了这个,但它没有用:

$('#myList li').text().addClass('myClass');

这是 HTML

<ul id="myList">
    <li>
        item 1
    </li>
    <li>
        item 2
        <ul>
            <li>
                asdasd
            </li>
        </ul>
    </li>
</ul>

我需要为每个列表项设置样式

4

3 回答 3

1

您不能只设置文本样式。

您可以通过执行以下操作来专门设置嵌套列表项的样式:

$('ul#myList > li > ul > li').addClass('myClass');

这会将类添加到您的示例myClass中包含文本的项目中asdasd

于 2013-11-14T20:57:16.327 回答
1

一级,直子

$('#myList > li').addClass('myClass');

二级及以上

$('#myList li li').addClass('myClass');

这个主题主要记录在 jquery api选择器页面上


现在您的问题已被编辑:您需要设置所有列表项的样式:

CSS

li { /* will affect ALL list-items */}

现在你说得更清楚了:

包装 LI 元素内的内容

$('li').wrapInner( "<span class='your-css-selector'></span>" );

现在您表明您只会搜索复制粘贴解决方案:

包装 LI 元素内部的内容,而不是位于另一个内部元素中的内容

$('#myList li').each(function(){
         $(this).contents().first().wrap("<span/>")
    });

归功于从他的评论中复制粘贴的用户 PLS 。

于 2013-11-14T20:57:25.473 回答
1

只需将您的文本包装在一个跨度中并对其应用类。当您对其li所有内容应用类时,都会受到影响,因此任何后代以及 li 下的嵌套 ul 都会受到影响。相反,只需将文本包装在一个元素中并将类应用于它们。

<ul id="myList">
    <li>
        <span>item 1</span>
    </li>
    <li>
        <span>item 2</span>
        <ul>
            <li>
                <span>asdasd</span>
            </li>
        </ul>
    </li>
</ul>

$('#myList li > span').addClass("myClass");

有了这个,你可以使用 Css 规则本身来处理它。

于 2013-11-14T20:59:02.973 回答