【问题标题】:Target the parent element jQuery定位父元素jQuery
【发布时间】:2018-03-08 06:32:06
【问题描述】:

我正在尝试在移动视图中使用 jQuery 应用某些类。现在使用 Bootstrap 和 Font Awesome,当在移动视图中向下箭头胡萝卜变成一个加号,可以点击展开下拉菜单。现在,当您单击 + Font Awesome 图标时,它将展开两个下拉菜单。

我怎样才能使它适用于与 + 图标有关的下拉菜单?

<ul class="nav navbar-nav navbar-right">
  <li class="dropdown">
    <a href="http://www.google.com" class="dropdown-toggle disabled" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">Google</a> <span class="fa fa-caret-down hidden-xs" aria-hidden="true"></span><span class="fa visible-xs-inline pull-right fa-plus"></span> <span class="sr-only">Drop Down Indicator Icon</span>
    <ul class="dropdown-menu">
      <li><a href="http://smile.amazon.com">Amazon</a></li>
      <li><a href="#">Fake Link 1</a></li>
      <li><a href="#">Fake Link 2</a></li>
      <li><a href="#">Fake Link 2</a></li>
    </ul>
  </li>
  <li class="dropdown">
    <a href="http://smile.amazon.com" class="dropdown-toggle disabled" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Amazon</a> <span class="fa fa-caret-down hidden-xs" aria-hidden="true"></span><span class="fa fa-plus visible-xs-inline pull-right"></span> <span class="sr-only">Drop Down Indicator Icon</span>
    <ul class="dropdown-menu">
      <li><a href="http://www.google.com">Google</a></li>
      <li><a href="#">Fake Link 1</a></li>
      <li><a href="#">Fake Link 2</a></li>
      <li><a href="#">Fake Link 2</a></li>
    </ul>
  </li>
  <li>
    <a href="#">Menu Item</a>
  </li>
  <li>
    <a href="#">Menu Item</a>
  </li>
  <li>
    <a href="#">Menu Item</a>
  </li>
</ul>

这是我当前使用的页面上的 jQuery。

//Hover for the navigation. 
$(function() {
  $(".dropdown").hover(
    function(){ 
      $(this).addClass('open'); 
      $(".dropdown.open .dropdown-toggle").attr("aria-expanded", "true");
    },
    function(){
      $(this).removeClass('open'); 
      $(".dropdown .dropdown-toggle").attr("aria-expanded", "false");
    }
  );
});

$('.dropdown-toggle').addClass("disabled");

//Add dropdown carrot to the dropdown items in menu. 
$("a.dropdown-toggle").after(" <span class='fa fa-caret-down hidden-xs' aria-hidden='true'></span><span class='fa fa-plus visible-xs-inline pull-right'></span> <span class='sr-only'>Drop Down Indicator Icon</span>");    
//Provides a way for the user to expand and collapse menu in mobile view. 
$(document).ready(function() {
  $("span.fa-plus").click(
    (function(e){
      if ($(".navbar-collapse.collapse.in .navbar-nav li.dropdown").hasClass('menu-open')) {
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").removeClass('open');
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").removeClass('menu-open');
        $(".dropdown.open .dropdown-toggle").attr("aria-expanded", "true");  
        console.log("Top If");
      }
      else {
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").addClass('menu-open');
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").removeClass('open');
        $(".dropdown.open .dropdown-toggle").attr("aria-expanded", "false");  
        console.log("Bottom If");
      }
      //alert("FA Plus");            
      $(this).toggleClass('fa-plus');
      $(this).toggleClass('fa-minus');
      return false;
    })
  );
});

【问题讨论】:

  • «现在两个下拉菜单都展开了。» -- 哎……不! :见this CodePen
  • 在移动视图中,单击菜单中的加号图标时它们都会展开。

标签: jquery html css twitter-bootstrap-3 drop-down-menu


【解决方案1】:

我解决了我遇到的问题。

改变了这个:

$(document).ready(function() {
  $("span.fa-plus").click(
    (function(e){
      if ($(".navbar-collapse.collapse.in .navbar-nav li.dropdown").hasClass('menu-open')) {
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").removeClass('open');
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").removeClass('menu-open');
        $(".dropdown.open .dropdown-toggle").attr("aria-expanded", "true");  
        console.log("Top If");
      }
      else {
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").addClass('menu-open');
        $(".navbar-collapse.collapse.in .navbar-nav li.dropdown").removeClass('open');
        $(".dropdown.open .dropdown-toggle").attr("aria-expanded", "false");  
        console.log("Bottom If");
      }
      //alert("FA Plus");            
      $(this).toggleClass('fa-plus');
      $(this).toggleClass('fa-minus');
      return false;
    })
  );
});

到这里:

$(document).ready(function() {
    $("span.fa-plus").click(
        (function(){
            if ($(this).parent().hasClass('menu-open')) 
                {
                    $(this).parent().removeClass('open');
                    $(this).parent().removeClass('menu-open');
                    $(this).parent().find(".dropdown-toggle").attr("aria-expanded", "false");
                }
            else 
                {
                    //$(".navbar-collapse.collapse.in .navbar-nav li.dropdown").addClass('menu-open');
                    $(this).parent().addClass('menu-open');
                    $(this).parent().removeClass('open');
                    $(".dropdown.menu-open .dropdown-toggle").attr("aria-expanded", "true");
                }
            //alert("FA Plus");            
            $(this).toggleClass('fa-plus');
            $(this).toggleClass('fa-minus');
            return false;
        })
    );
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-09
    • 1970-01-01
    相关资源
    最近更新 更多