【问题标题】:Change CSS of parent element when child element is clicked using JQuery使用 JQuery 单击子元素时更改父元素的 CSS
【发布时间】:2022-01-28 04:05:45
【问题描述】:

我正在尝试在单击打开移动汉堡菜单时更改父图像(导航栏的边框)的 CSS,然后在再次单击/菜单关闭时再次返回。

我尝试使用 .parent 和 .find 选择器选项来定位带有边框的导航栏,但我无法让其中任何一个工作。我想我很接近,但我正在努力找出问题所在。感谢您的帮助。

$(".navbar-toggler").click(function(){
        $(this).find('.navbar').addClass("is-clicked");
        $(this).find('.navbar').removeClass("is-clicked");
            });
.navbar {
    position: relative;
    z-index: 98;
    border-bottom: 4px solid #000000;
    margin-left: 40px;
    margin-right: 40px;
    color: #000000;
    height: 100px;
}

.navbar.is-clicked {
    border-bottom: red;
}

.navbar-toggler {
    font-size: 32px;
    color: black;
}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<nav class="navbar navbar-expand-lg">
    <div class="container-fluid nav-container">
      <a class="navbar-brand" href="index.html">ABC.</a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="toggler-icon"><i class="fas fa-bars"></i>
        </span>
      </button>
      <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
        <ul class="navbar-nav">
          <li class="nav-item nav-item-about p-nav">
            <a class="nav-link" aria-current="page" href="about.html">About</a>
          </li>
          <li class="nav-item p-nav">
            <a class="nav-contact" href="mailto:michellelclement@gmail.com?subject=Hello from your portfolio!">Contact</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>

【问题讨论】:

    标签: html jquery css


    【解决方案1】:

    那是因为当你使用$(this).find('.navbar') 时,它只搜索具有类导航栏的元素inside

    如果要向外搜索,则需要使用.closest(),它将选择与选择器.navbar匹配的最近的父元素:

    $(".navbar-toggler").click(function(){
        $(this).closest('.navbar').toggleClass("is-clicked");
    });
    

    查看概念验证示例:

    $(".navbar-toggler").click(function() {
      $(this).closest('.navbar').toggleClass("is-clicked");
    });
    .navbar {
      position: relative;
      z-index: 98;
      border-bottom: 4px solid #000000;
      margin-left: 40px;
      margin-right: 40px;
      color: #000000;
      height: 100px;
    }
    
    .navbar.is-clicked {
      border-bottom-color: red;
    }
    
    .navbar-toggler {
      font-size: 32px;
      color: black;
    }
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" />
    <link href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" rel="stylesheet" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    
    <nav class="navbar navbar-expand-lg">
      <div class="container-fluid nav-container">
        <a class="navbar-brand" href="index.html">ABC.</a>
        <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
            <span class="toggler-icon"><i class="fas fa-bars"></i>
            </span>
          </button>
        <div class="collapse navbar-collapse justify-content-end" id="navbarSupportedContent">
          <ul class="navbar-nav">
            <li class="nav-item nav-item-about p-nav">
              <a class="nav-link" aria-current="page" href="about.html">About</a>
            </li>
            <li class="nav-item p-nav">
              <a class="nav-contact" href="mailto:michellelclement@gmail.com?subject=Hello from your portfolio!">Contact</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
    
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>

    【讨论】:

    • 非常感谢您,它有效!我有点接近哈哈
    【解决方案2】:

    Jquery:

    $('.navbar-toggler').on('click', function(){
      $('.navbar').toggleClass('is-clicked');
    });
    

    您还需要在您的 css 中进行更改:

    .navbar.is-clicked {
      border-bottom-color: red;
    }
    

    【讨论】:

    • 非常感谢您的回复!
    猜你喜欢
    • 2015-09-12
    • 2011-07-01
    • 2017-10-09
    • 2010-09-26
    • 2021-01-26
    • 1970-01-01
    • 2012-05-03
    • 2014-12-07
    • 1970-01-01
    相关资源
    最近更新 更多