使用javascript将css类添加到ul中的所有li父元素

周刊

我有这样的html代码:

<ul class="dropdown-menu mega-dropdown-menu">
    <li class="should be = col-sm-4">
        <ul>
            <li class="should be = dropdown-header">Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
    <li class="should be = col-sm-4">
        <ul>
            <li class="should be = dropdown-header">Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
    <li class="should be = col-sm-4">
        <ul>
            <li class="should be = dropdown-header">Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
</ul>

这段代码是从服务器端生成的,现在我的问题是,如何将col-sm-4css 类附加到所有li元素并使用 javascript将 css 类添加dropdown-header到第一li个子元素?

未捕获类型错误

原生 Javascript 解决方案:

通过将所有适用的列表项存储在一个变量中,稍后可以在for循环中使用该变量,我们可以遍历每个实例并添加所需的类。

如果不需要整个 javascript 库或框架(如 jQuery)来进行只需要发生一次的微不足道的更改,则此解决方案是可取的。

代码片段演示:

// Get direct descendant list-item children using querySelectorAll and CSS child combinator selector 
var listItems = document.querySelectorAll('.dropdown-menu > li');

// Add class to each instance in for loop
for(var i = 0; i < listItems.length; i++) {
  listItems[i].className = 'col-sm-4';
}

// Get first list-item child of nested ul element with class name "col-sm-4" using querySelectorAll and CSS :first-child pseudo-selector  
var headerListItems = document.querySelectorAll('.dropdown-menu .col-sm-4 li:first-child');

// Add class to each instance in for loop
for(var i = 0; i < listItems.length; i++) {
  headerListItems[i].className = 'dropdown-header';
}

// Note: "querySelectorAll" allows for the ability to specify selectors using CSS Selector Syntax
<ul class="dropdown-menu mega-dropdown-menu">
    <li >
        <ul>
            <li>Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
    <li >
        <ul>
            <li >Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
    <li >
        <ul>
            <li >Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
</ul>

jQuery 解决方案:

考虑使用该.addClass()方法通过指定预期的选择器来添加所需的类,如下面的嵌入式代码片段所示。

如果此更改需要不止一次或在类似范围内的其他地方发生,则此解决方案更可取。

代码片段演示:

jQuery('.dropdown-menu > li').addClass('col-sm-4');

jQuery('.dropdown-menu .col-sm-4 li:first-child').addClass('dropdown-header');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="dropdown-menu mega-dropdown-menu">
    <li >
        <ul>
            <li>Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
    <li >
        <ul>
            <li >Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
    <li >
        <ul>
            <li >Item0</li>
            <li><a href="#">Item1</a></li>
            <li><a href="#">Item2</a></li>
        </ul>
    </li>
</ul>

替代方案:标准 CSS 选择器语法

仍然可以使用 CSS 选择器语法通过以下方法定位有问题的元素:

对于什么是“col-sm-4”.dropdown-menu > li
使用子组合器>选择第一个直接后代列表项元素

对于什么是“下拉标题”.dropdown-menu ul li:first-child
使用伪选择器选择第一个子列表项元素:first-child

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery将CSS类添加到父<ul>元素

来自分类Dev

使用JavaScript将CSS类添加到动态ul li标签

来自分类Dev

如何使用javascript将字符串添加到ul中的所有列表项?

来自分类Dev

Vuejs 将 css 类添加到数组中的 ul li 列表

来自分类Dev

单击提交按钮时如何使用JavaScript将li元素添加到ul

来自分类Dev

使用JavaScript将多个Li添加到Ul

来自分类Dev

Javascript使用数组将li添加到ul

来自分类Dev

使用JavaScript将多个Li添加到Ul

来自分类Dev

使用jquery将li添加到现有ul

来自分类Dev

将类添加到 CKEditor 中的特定父元素

来自分类Dev

将类添加到父元素

来自分类Dev

使用javascript将子元素添加到父元素

来自分类Dev

如何使用JavaScript将类添加到父级的子级元素

来自分类Dev

将类添加到具有(大于)2 li的ul的ul

来自分类Dev

当单击 li 时,将隐藏类添加到所有 li 但不添加到单击的 li 并删除类(如果该类已使用 jquery 可用)

来自分类Dev

在悬停时将类添加到li,但从所有其他对象中删除

来自分类Dev

jQuery - 如果子元素具有特定的 css 类,如何将 css 添加到父元素

来自分类Dev

将CSS类添加到父级li和sub li

来自分类Dev

如何将类添加到ul li

来自分类Dev

您如何防止(单击)将类添加到 ngFor 中的所有元素?

来自分类Dev

当使用jquery单击特定li时,如何将css类添加到列表中?

来自分类Dev

将CSS类添加到Angularjs中的标记元素

来自分类Dev

当导航位于外部文件中时,如何使用 jQuery 将类添加到导航 ul li a?

来自分类Dev

使用JavaScript将类添加到网页中除特定<div>之外的所有图像中

来自分类Dev

jquery 将类添加到父 LI

来自分类Dev

将属性添加到<body>中带有纯JavaScript的所有元素

来自分类Dev

Javascript-将类添加到数组中的元素

来自分类Dev

使用JavaScript将类添加到可悬浮元素

来自分类Dev

将 css 类添加到所有帖子中附加的图像?

Related 相关文章

  1. 1

    jQuery将CSS类添加到父<ul>元素

  2. 2

    使用JavaScript将CSS类添加到动态ul li标签

  3. 3

    如何使用javascript将字符串添加到ul中的所有列表项?

  4. 4

    Vuejs 将 css 类添加到数组中的 ul li 列表

  5. 5

    单击提交按钮时如何使用JavaScript将li元素添加到ul

  6. 6

    使用JavaScript将多个Li添加到Ul

  7. 7

    Javascript使用数组将li添加到ul

  8. 8

    使用JavaScript将多个Li添加到Ul

  9. 9

    使用jquery将li添加到现有ul

  10. 10

    将类添加到 CKEditor 中的特定父元素

  11. 11

    将类添加到父元素

  12. 12

    使用javascript将子元素添加到父元素

  13. 13

    如何使用JavaScript将类添加到父级的子级元素

  14. 14

    将类添加到具有(大于)2 li的ul的ul

  15. 15

    当单击 li 时,将隐藏类添加到所有 li 但不添加到单击的 li 并删除类(如果该类已使用 jquery 可用)

  16. 16

    在悬停时将类添加到li,但从所有其他对象中删除

  17. 17

    jQuery - 如果子元素具有特定的 css 类,如何将 css 添加到父元素

  18. 18

    将CSS类添加到父级li和sub li

  19. 19

    如何将类添加到ul li

  20. 20

    您如何防止(单击)将类添加到 ngFor 中的所有元素?

  21. 21

    当使用jquery单击特定li时,如何将css类添加到列表中?

  22. 22

    将CSS类添加到Angularjs中的标记元素

  23. 23

    当导航位于外部文件中时,如何使用 jQuery 将类添加到导航 ul li a?

  24. 24

    使用JavaScript将类添加到网页中除特定<div>之外的所有图像中

  25. 25

    jquery 将类添加到父 LI

  26. 26

    将属性添加到<body>中带有纯JavaScript的所有元素

  27. 27

    Javascript-将类添加到数组中的元素

  28. 28

    使用JavaScript将类添加到可悬浮元素

  29. 29

    将 css 类添加到所有帖子中附加的图像?

热门标签

归档