javascript - 如何为 ul 列表添加/删除事件类?

标签 javascript jquery html css

当点击事件类时,原来的“li”留在它应该改变的地方。我试图弄乱代码但无法找到解决方案。有人可以检查我错过了什么吗?我想我正在使用特定于我的代码的东西。我试过“使用 jquery 为 ul 列表添加/删除事件类?”但这没有帮助。如果您能找到我的代码中的错误,那就太好了。

HTML:

<div class="collapse navbar-collapse navbar-ex1-collapse">
    <ul class="nav navbar-nav navbar-right">
        <li class="active"><a href="#juk">About</a></li>
        <li><a onclick="myFunction1()">Development</a></li>
        <li><a href="http://docs.kde.org/stable/en/kdemultimedia/juk/index.html">Wiki/Documentation</a></li>
        <li><a onclick="myFunction()">Screenshots</a></li>
        <li class="dropdown">
        <a data-toggle="dropdown" class="dropdown-toggle" href="#">Releases </a>
        <ul class="dropdown-menu">
            <li><a href="ftp://ftp.kde.org/pub/kde/stable/latest">JuK Latest</a></li>
            <li><a href="http://developer.kde.org/~wheeler/files/src/juk-1.95a.tar.gz">JuK 1.95</a></li>
            <li><a href="http://developer.kde.org/~wheeler/files/src/juk-1.1.tar.gz">JuK 1.1</a></li>
            <li><a href="http://developer.kde.org/~wheeler/files/src/juk-1.0-1.tar.gz">JuK 1.0</a></li>
        </ul>
        </li>
        <li><a href="#contactus">Contact Us</a></li>
    </ul>
</div>

JS:

$(function() {
    ( 'ul.nav.navbar-nav.navbar-right li' ).on( 'click', function() {
        $( this ).parent().find( 'li.active' ).removeClass( 'active' );
        $( this ).addClass( 'active' );
    });
});

最佳答案

你定位错了<li> .on('click') 中的元素事件

你说

$( 'ul.nav navbar-nav navbar-right li' )

它将寻找 li那是 navbar-right 的 child 那也是 navbar-nav 的 child 那也是 ul.nva 的 child .

你应该定位的是:

$( 'ul.nav.navbar-nav.navbar-right li' )

注意 li 之前的空格?那是因为它是 ul 的后代具有多个类的元素。

我知道您从 HTML DOM 元素复制了类列表,但是如果您谈论的是具有多个类的单个元素,则必须避免在 jQuery 选择器中使用空格。

$(function() {
  $('ul.nav.navbar-nav.navbar-right li').on('click', function() {
    $(this).parent().find('li.active').removeClass('active');
    $(this).addClass('active');
  });
});
.active {
  background-color: gold;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<div class="collapse navbar-collapse navbar-ex1-collapse">
  <ul class="nav navbar-nav navbar-right">
    <li class="active"><a href="#juk">About</a></li>
    <li><a>Development</a></li>
    <li><a href="#">Wiki/Documentation</a></li>
    <li><a >Screenshots</a></li>
    <li class="dropdown">
      <a data-toggle="dropdown" class="dropdown-toggle" href="#">Releases </a>
      <ul class="dropdown-menu">
        <li><a href="#">JuK Latest</a></li>
        <li><a href="#">JuK 1.95</a></li>
        <li><a href="#">JuK 1.1</a></li>
        <li><a href="#">JuK 1.0</a></li>
      </ul>
    </li>
    <li><a href="#contactus">Contact Us</a></li>
  </ul>
</div>

关于javascript - 如何为 ul 列表添加/删除事件类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53691183/

相关文章:

html - 除页面外的DIV

javascript - 将 React 门户渲染到另一个组件 DOM 中是否安全?

javascript - 添加淡入淡出到这个 jQuery 翻转

javascript - jQuery 切换 div 和类

Jquery slider 在第一次加载时显示错误

html - 可扩展的 div(点击时),内联 block ,不下推第二行的其他 div

javascript - 当 FireBug 启用时,matchMedia 返回 null

javascript - jQuery $.get() 内存使用情况

javascript - 无法使用 ejs.renderfile 正确渲染图像

javascript - 向一个 jQuery/DOM 元素添加一个函数