【问题标题】:jQuery - Click Event Only Firing OncejQuery - 点击事件只触发一次
【发布时间】:2021-04-21 13:19:35
【问题描述】:

我有一个点击功能,它只在第一次激活时触发。

基本上我有一个 Bootstrap 4 站点,当我打开任何下拉菜单时,我想在标题中添加一个类。当我单击“ul li”时,它会根据我的代码在控制台中记录“test”,但是当我再次单击它以关闭菜单并再次等时,它永远不会输出控制台日志消息再次。

$(document).on('click', '.navbar-nav li', function() {
    console.log('test');
    $('.navbar-nav li').each(function() {
        if ($(this).hasClass('show')) {
            // Add Class Code
        }
    });
});

这是我的 HTML:

<ul id="menu-main-menu" class="navbar-nav"><li itemscope="itemscope" itemtype="https://www.schema.org/SiteNavigationElement" id="menu-item-62" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children dropdown menu-item-62 nav-item"><a title="Golf" href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="dropdown-toggle nav-link" id="menu-item-dropdown-62">Golf</a>
    <div class="dropdown_wrapper">
        <div class="container">
            <div class="row w-100">
                <div class="col-12 position-unset">
                    <ul class="dropdown-menu" aria-labelledby="menu-item-dropdown-62" role="menu">
                        <li itemscope="itemscope" itemtype="https://www.schema.org/SiteNavigationElement" id="menu-item-78" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-78 nav-item">
                            <a title="Golf Courses" href="#" class="dropdown-item">Golf Courses</a> 
                        </li>
                    </ul>
                </div>
            </div>
        </div>
    </div>
</li>
<li itemscope="itemscope" itemtype="https://www.schema.org/SiteNavigationElement" id="menu-item-72" class="box_button menu-item menu-item-type-custom menu-item-object-custom menu-item-72 nav-item">
    <a title="Course Update" href="#" class="nav-link">Course Update</a>
</li>

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • 请提供一个可运行的minimal reproducible example 来演示该问题。您可以在问题编辑器中单击&lt;&gt; 并包含引导资源以使其在页面中的此处运行

标签: html jquery css events dom-events


【解决方案1】:

我猜你想要这样的东西:

$('.navbar-nav').find('li').on('click', e => {
  console.log('test');
    
  if ($(e.currentTarget).hasClass('show')) {
    // Add Class Code
  }
})

试试这个。

【讨论】:

  • 不幸的是,这根本不起作用,实际上并没有记录测试。
  • 你能提供一个我们可以复制它的代码笔吗? @LewisHardisty 我刚刚编辑了代码。请立即尝试!
  • 这是记录“测试”,但不幸的是它只触发了一次。
  • 如果你提供一个带有你的代码和你想要实现的东西的codepen会更好。
  • 如果它触发一次是因为您的 javascript 上有另一个错误。尝试隔离所有内容,您将看到每次单击所选元素时都会打印 console.log
猜你喜欢
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多