【问题标题】:Not being able to use Jquery.contains() for checking nested <ul> in <li>无法使用 Jquery.contains() 检查 <li> 中的嵌套 <ul>
【发布时间】:2020-05-23 13:20:53
【问题描述】:

主要问题 | $.contains(arg1, arg2)

我无法让$.contains() 工作。
我想检查&lt;li&gt; 是否有嵌套的&lt;ul class="sub-menu"&gt;,但无论我将参数放入什么格式,我总是得到false 的输出。 (希望最终将其包装在 if 语句中以编辑一些 CSS)

更多信息如下

JS

$( document ).ready(navSecondary());
function navSecondary(){
  var firstListSize = $("nav.header-secondary>ul>li").length;
  for (var i = 0; i < firstLiSize; i++) {
    var nav = $("nav.header-secondary>ul>li:nth-child("+i+1+")");
    var sub = document.documentElement.getElementsByTagName("ul");
    var check = $.contains(sub,nav);
    console.log(check);
  }
}

HTML

<nav class="header-secondary">
    <ul>
        <li><a href="#">item 1</a>
            <ul class="sub-menu">
                <li><a href="#">Sub Option 1</a></li>
                <li><a href="#">Sub Option 2</a></li>
                <li><a href="#">Sub Option 3</a></li>
            </ul>
        </li>
        <li><a href="#">Item 2</a></li>
        <li><a href="#">Item 3</a></li>
    </ul>
</nav>

这里我希望能够使用 Js + Jquery 有条件地编辑 css(Codepen 有基本 css)

Codepen (Just for reference :)))

一些背景

所以我在 WordPress 上创建了一个主题并想使用 WordPress 的内置菜单管理器,我不想经历让 WordPress 为每个列表项和子菜单列表创建类等等的麻烦。 .
编辑-我意识到有一种更简单的方法来做 CSS(通过 WordPress 将添加到菜单项的类),但我想尝试通过 Jquery 来做

【问题讨论】:

  • $( document ).ready(navSecondary()) 应该是 $( document ).ready(navSecondary);

标签: javascript html jquery dom conditional-formatting


【解决方案1】:

试试这个:

$( document ).ready(navSecondary());
function navSecondary(){
  var list = $("nav.header-secondary>ul>li");
  for (var i = 0; i < list.length; i++) {
    var check = list[i].children.length > 1;
    console.log(check)
  }
}

使用 $("nav.header-secondary>ul>li") 获得列表后,您可以使用该列表来迭代并检查其内容:)


如果你特别想找ul标签

$( document ).ready(navSecondary());
function navSecondary(){
  var list = $("nav.header-secondary>ul>li");
  for (var i = 0; i < list.length; i++) {
    var check = [...list[i].children].some(c => c.tagName == "UL")
    console.log(check)
  }
}

【讨论】:

  • 是的,这就像一个魅力,我对 JS 很陌生,JQ 没有意识到你可以将 .lenght 用于子/嵌套的东西。如果它不是太麻烦可以解释为什么$.contains() 不能像我那样工作?非常感谢你的回答:))
  • 但是如果您决定在图标菜单的列表标签中使用 icon 或 imga 并且 icon 或 image 也是子项,这将给您一个错误。你需要选择标签为ul的孩子
  • firstListSize for 条件中有错字除外)
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2023-03-23
  • 2018-10-05
  • 2017-04-10
  • 1970-01-01
相关资源
最近更新 更多