首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以更改单击元素?

是否可以更改单击元素?
EN

Stack Overflow用户
提问于 2019-04-15 18:07:54
回答 2查看 85关注 0票数 0

我正在构建一个自定义的下拉菜单,我设法在单击箭头图标后获得下拉功能。现在,我希望整个菜单行都是可点击的,而不仅仅是箭头。这很难解释,但我在下面提供了截图。我试着摆弄这些代码,但我没能从中获得成功。

单击箭头时出现的菜单下拉菜单:https://gyazo.com/dad1eedd6707faf1ee789b434ae239bc

当我点击菜单行而不仅仅是箭头时,我想让它起作用。

代码语言:javascript
运行
复制
jQuery(document).ready(function() {
  // insert toggle button
  jQuery(".advanced-sidebar-nav").each(function() {
    jQuery(".menu-item-has-children", jQuery(this)).each(function() {
      // insert toggle button
      jQuery("> a", jQuery(this)).append(
        '<span class="advanced-sidebar-nav-toggle"></span>'
      );

      // add indent
      var depth = jQuery(this).parents(".menu-item-has-children").length;
      jQuery("ul li a", jQuery(this)).attr(
        "style",
        "padding-left:" + (depth + 2) * 20 + "px !important"
      );

      // open nav menu toggle
      if (jQuery("ul", jQuery(this)).css("display") == "block") {
        jQuery(".advanced-sidebar-nav-toggle", jQuery(this)).addClass(
          "advanced-sidebar-nav-toggle-open"
        );
      }
    });
  });
  // menu toggle
  jQuery(".advanced-sidebar-nav").on(
    "click",
    ".advanced-sidebar-nav-toggle",
    function(e) {
      e.preventDefault();


      const self = this;

      jQuery(".advanced-sidebar-nav-menu-open").each(
        function() {
          $(this).removeClass("advanced-sidebar-nav-menu-open").siblings("ul").slideUp(300);
          $(this).children(".advanced-sidebar-nav-toggle-open").not(self).removeClass("advanced-sidebar-nav-toggle-open");
        }
      );

      jQuery(this).toggleClass("advanced-sidebar-nav-toggle-open");

      if (jQuery(this).hasClass("advanced-sidebar-nav-toggle-open")) {
        jQuery(this)
          .parent("a")
          .addClass("advanced-sidebar-nav-menu-open")
          .siblings("ul")
          .slideDown(300);

      } else {
        jQuery(this)
          .parent("a")
          .removeClass("advanced-sidebar-nav-menu-open")
          .siblings("ul")
          .slideUp(300);
      }
    }
  );
});
代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<div class="home-category-container">
  <aside id="advanced_sidebar_nav_widget-3" class="widget-odd widget-last widget-first widget-1 widget woocommerce widget_product_categories widget advanced-sidebar-nav-widget">
    <h3 class="widget-title">Product categorieën</h3>
    <div class="advanced-sidebar-nav advanced-sidebar-nav-default">
      <ul id="menu-sidebar-menu" class="advanced-sidebar-menu">
        <li id="menu-item-4701" class="dropdown menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4701"><a href="#" class="">Laptops<span class="advanced-sidebar-nav-toggle"></span></a>
          <ul class="sub-menu" style="display: none; height: 200px; padding-top: 0px; margin-top: 0px; padding-bottom: 0px; margin-bottom: 0px; overflow: hidden;">
            <li id="menu-item-4696" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4696"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/laptops/i3/" style="padding-left:40px !important">i3</a></li>
            <li id="menu-item-4697" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4697"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/laptops/i5/" style="padding-left:40px !important">i5</a></li>
            <li id="menu-item-4698" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4698"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/laptops/i7/" style="padding-left:40px !important">i7</a></li>
            <li id="menu-item-4695" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4695"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/laptops/game-laptops/" style="padding-left:40px !important">Game laptops</a></li>
          </ul>
        </li>
        <li id="menu-item-4703" class="dropdown menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4703"><a href="#">Computers<span class="advanced-sidebar-nav-toggle"></span></a>
          <ul class="sub-menu">
            <li id="menu-item-4709" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4709"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/computers/tower/" style="padding-left:40px !important">Tower</a></li>
            <li id="menu-item-4710" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4710"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/computers/workstation/" style="padding-left:40px !important">Workstation</a></li>
            <li id="menu-item-4708" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4708"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/computers/game-computers/" style="padding-left:40px !important">Game computers</a></li>
          </ul>
        </li>
        <li id="menu-item-4704" class="dropdown menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4704"><a href="#">Monitoren<span class="advanced-sidebar-nav-toggle"></span></a>
          <ul class="sub-menu">
            <li id="menu-item-4712" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4712"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/monitoren/19/" style="padding-left:40px !important">19″</a></li>
            <li id="menu-item-4713" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4713"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/monitoren/22/" style="padding-left:40px !important">22″</a></li>
            <li id="menu-item-4714" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4714"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/monitoren/24/" style="padding-left:40px !important">24″</a></li>
            <li id="menu-item-4715" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4715"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/monitoren/27/" style="padding-left:40px !important">27″</a></li>
            <li id="menu-item-4716" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4716"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/monitoren/32/" style="padding-left:40px !important">32″</a></li>
          </ul>
        </li>
        <li id="menu-item-4705" class="dropdown menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4705"><a href="#">Netwerkapparatuur<span class="advanced-sidebar-nav-toggle"></span></a>
          <ul class="sub-menu">
            <li id="menu-item-4721" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4721"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/netwerkapparatuur/switchers/" style="padding-left:40px !important">Switchers</a></li>
            <li id="menu-item-4718" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4718"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/netwerkapparatuur/nas/" style="padding-left:40px !important">Nas</a></li>
            <li id="menu-item-4722" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4722"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/netwerkapparatuur/thin-clients/" style="padding-left:40px !important">Thin clients</a></li>
            <li id="menu-item-4717" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4717"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/netwerkapparatuur/accespoints/" style="padding-left:40px !important">Access Points</a></li>
            <li id="menu-item-4719" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4719"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/netwerkapparatuur/repeaters/" style="padding-left:40px !important">Repeaters</a></li>
            <li id="menu-item-4720" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4720"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/netwerkapparatuur/routers/" style="padding-left:40px !important">Routers</a></li>
          </ul>
        </li>
        <li id="menu-item-4706" class="dropdown menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4706"><a href="#">Hard Drive<span class="advanced-sidebar-nav-toggle"></span></a>
          <ul class="sub-menu">
            <li id="menu-item-4725" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4725"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/hard-drive/ssd-drive/" style="padding-left:40px !important">SSD Drive</a></li>
            <li id="menu-item-4726" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4726"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/hard-drive/ssd-m-2/" style="padding-left:40px !important">SSD M.2</a></li>
            <li id="menu-item-4727" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4727"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/hard-drive/ssd-msata/" style="padding-left:40px !important">SSD Msata</a></li>
            <li id="menu-item-4723" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4723"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/hard-drive/sata-2-5/" style="padding-left:40px !important">Sata 2.5″</a></li>
            <li id="menu-item-4724" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4724"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/hard-drive/sata-3-5/" style="padding-left:40px !important">Sata 3.5″</a></li>
          </ul>
        </li>
        <li id="menu-item-4707" class="dropdown menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-4707"><a href="#">Accessoires<span class="advanced-sidebar-nav-toggle"></span></a>
          <ul class="sub-menu">
            <li id="menu-item-4729" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4729"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/accessoires/kabels/" style="padding-left:40px !important">Kabels</a></li>
            <li id="menu-item-4728" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4728"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/accessoires/adapters/" style="padding-left:40px !important">Adapters</a></li>
            <li id="menu-item-4730" class="menu-item menu-item-type-taxonomy menu-item-object-product_cat menu-item-4730"><a href="http://projecten.jumsum.nl/adtcomputers/product-category/accessoires/memory/" style="padding-left:40px !important">Memory</a></li>
          </ul>
        </li>
      </ul>
    </div>
  </aside>
</div>

我尝试将单击更改为我自己的名为.dropdown的自定义类,但当我单击它时,它会将这些类添加到自定义类中,而不是添加到.advanced-sidebar-nav-menu中。

任何帮助都是非常感谢的。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2019-04-15 18:28:59

如果我是对的,你需要整个li应该是可点击的,如果你想这样,你需要尝试这种方式,而不是锚链接提供的li元素作为可点击的链接。

在这里,你也可以给出条件,如果你有子菜单,那么只能通过添加一些类来使其可点击。

代码语言:javascript
运行
复制
    jQuery(".menu-sidebar-menu").on(
        "click",
        "li",function(){ 
    // your calculation 
});
票数 0
EN

Stack Overflow用户

发布于 2019-04-15 20:17:23

我已经解决了这个问题,我在单击时将jQuery更改为另一个名为.dropdown的类。然后,当用户单击菜单中的行时,它将执行旧功能。

我已经将“”this“”的每个引用都更改为jQuery选择器,以及随附的find函数,以添加和删除相应点上的类。

代码语言:javascript
运行
复制
 jQuery(".advanced-sidebar-nav").on(
        "click",
        ".dropdown",
        function(e) {
            e.preventDefault();


           const self = $(this).find(".advanced-sidebar-nav-toggle");

            jQuery(".advanced-sidebar-nav-menu-open").each(
              function() {
                  $(this).find(".advanced-sidebar-nav-toggle").parent("a").removeClass("advanced-sidebar-nav-menu-open").siblings("ul").slideUp(300);
                  $(this).find(".advanced-sidebar-nav-toggle").not(self).removeClass("advanced-sidebar-nav-toggle-open");
              }
            );

            jQuery(self).toggleClass("advanced-sidebar-nav-toggle-open");

            if(jQuery(self).hasClass("advanced-sidebar-nav-toggle-open")) {
                jQuery(self)
                      .parent("a")
                      .addClass("advanced-sidebar-nav-menu-open")
                      .siblings("ul")
                      .slideDown(300);

                  } else {
                    jQuery(self)
                      .parent("a")
                      .removeClass("advanced-sidebar-nav-menu-open")
                      .siblings("ul")
                      .slideUp(300);
                  }
        }
    );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55686837

复制
相关文章

相似问题

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