首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果有子菜单或子菜单,则将HTML元素添加到锚标记中

如果有子菜单或子菜单,则将HTML元素添加到锚标记中
EN

Stack Overflow用户
提问于 2022-11-11 05:43:27
回答 3查看 66关注 0票数 2

我试过这个

代码语言:javascript
复制
if ($('nav li.menu-item-has-children:has(ul)'))
$ ('nav li.menu-item-has-children a').append ( "<span class=\"plus-minus\">+</span>");

但是所有的锚标记子菜单也都得到了相同的HTML元素

这是菜单结构

代码语言:javascript
复制
<ul id="primary-menu" class="menu">
  <li class="menu-item "><a href="home/">Home</a></li>
  <li class="menu-item" ><a href="about">About <span class=\"plus-minus\">+</span></a>
    <ul class="sub-menu">
      <li class="menu-item"><a href="basics/">Basic</a></li>
    </ul>
  </li>
  <li class="menu-item menu-item-has-children"><a href="products" aria-current="page">Products</a>
    <ul class="sub-menu">
      <li  class="menu-item"><a href="Product-1">Product-1</a></li>
      <li  class="menu-item "><a href="Product-2">Product-2</a></li>
      <li  class="menu-item "><a href="Product-3">Product-3</a></li>
      <li  class="menu-item "><a href="Product-4">Product-4</a></li>
      <li  class="menu-item "><a href="Product-5">Product-5</a></li>
      <li  class="menu-item "><a href="Product-6">Product-6</a></li>
    </ul>
  </li>
  <li  class="menu-item"><a href="contact-us/">Contact Us</a></li>
</ul>

我希望它是

代码语言:javascript
复制
<ul id="primary-menu" class="menu">
  <li class="menu-item "><a href="home/">Home</a></li>
  <li class="menu-item" ><a href="about">About <span class=\"plus-minus\">+</span> </a>
    <ul class="sub-menu">
      <li class="menu-item"><a href="basics/">Basic</a></li>
    </ul>
  </li>
  <li class="menu-item menu-item-has-children"><a href="products" aria-current="page">Products <span class=\"plus-minus\">+</span></a>
    <ul class="sub-menu">
      <li  class="menu-item"><a href="Product-1">Product-1</a></li>
      <li  class="menu-item "><a href="Product-2">Product-2</a></li>
      <li  class="menu-item "><a href="Product-3">Product-3</a></li>
      <li  class="menu-item "><a href="Product-4">Product-4</a></li>
      <li  class="menu-item "><a href="Product-5">Product-5</a></li>
      <li  class="menu-item "><a href="Product-6">Product-6</a></li>
    </ul>
  </li>
  <li  class="menu-item"><a href="contact-us/">Contact Us</a></li>
</ul>


if ($('nav li.menu-item-has-children:has(ul)'))
$ ('nav li.menu-item-has-children a').append ( "<span class=\"plus-minus\">+</span>");
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-11-11 06:34:06

试试这个:

代码语言:javascript
复制
(function ($) {
  $(document).ready(function () {
    if ($("nav li.menu-item:has(ul)").length) {
      $("nav li.menu-item-has-children > a").append(
        '<span class="plus-minus">+</span>'
      );
    }
  });
})(jQuery);
票数 0
EN

Stack Overflow用户

发布于 2022-11-11 06:04:29

这两行的语义都不正确:

代码语言:javascript
复制
if ($('nav li.menu-item-has-children:has(ul)'))

$()函数的返回值总是一个jQuery对象,因此条件总是计算为true。你可以这样做

代码语言:javascript
复制
if ($('nav li.menu-item-has-children:has(ul)').length)

但是坚持住因为这是不必要的。

代码语言:javascript
复制
$ ('nav li.menu-item-has-children a').append ( "<span class=\"plus-minus\">+</span>");

<span>元素追加到与选择器匹配的所有元素中。另一行中的:has()对该选择器没有影响。

我想你真正想要的是

代码语言:javascript
复制
$ ('nav li.menu-item-has-children:has(ul) a').append ( "<span class=\"plus-minus\">+</span>");

没有if。它将选择所有作为nav li.menu-item-has-children:has(ul)后代的元素,并将<span>元素追加到它们。

票数 0
EN

Stack Overflow用户

发布于 2022-11-11 06:07:23

因为您将span元素附加到li.menu-item-has-children类下的每个锚标记中。

您可以使用>选择器。

试着换掉这条线。

代码语言:javascript
复制
$ ('nav li.menu-item-has-children > a').append ( "<span class=\"plus-minus\">+</span>");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74398466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档