【问题标题】:Activating the menu working only after two clicks仅在单击两次后才能激活菜单
【发布时间】:2021-12-07 18:15:04
【问题描述】:

我有一个菜单,当我点击某个菜单时,该菜单会变为活动状态并突出显示。

代码运行良好,我不知道是 blazor 的问题还是我的代码中的问题。

但是发生的情况如下,当我打开应用程序并单击某些菜单时没有任何反应,然后如果我再次单击菜单,只需单击一下即可正常工作

HTML 代码:

<div>
   <ul class="nav" onclick="ActiveTest()">
      <li>
         <a href="#" class="active">
         <i class="fas fa-home"></i>
         <span class="name">Home</span>
         </a>
      </li>
      <li>
         <a href="#">
         <i class="fas fa-book-reader"></i>
         <span class="name">Reader</span>
         </a>
      </li>
      ...
   </ul>
</div>

JS:

function ActiveTest() {
    $(".nav li a").click(function () {
        $(".nav li a").removeClass("active");
        $(this).addClass("active");
    });
}

遇到此问题的任何人都可以告诉我一种在打开应用时不会出现此两次单击问题的方法

【问题讨论】:

    标签: javascript html jquery blazor


    【解决方案1】:

    您调用 ActiveTest 的第一次点击然后将点击事件添加到代码中的所有 &lt;li&gt;

    你可能想要这样的东西。

    HTML

    <div class="bar">
       <ul class="nav">
          <li >
             <a href="#" onclick="OpenMenu(this)" class="active">
             <i class="fas fa-home"></i>
             <span class="name">Home</span>
             </a>
          </li>
          <li>
             <a href="#" onclick="OpenMenu(this)">
             <i class="fas fa-book-reader"></i>
             <span class="name">Reader</span>
             </a>
          </li>
       </ul>
    </div>
    

    JS

    function OpenMenu(el) {
        
       $(".nav li a").removeClass("active"); 
       $(el).addClass("active");
    }
    

    【讨论】:

    • 我测试了您的方法,似乎双击部分不再存在,但是当我现在单击它时,它会消失突出显示并且不再适用。示例代码:jsfiddle.net/qk3jL0se
    • 查看更新的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多