Jquery 添加和删除类可以使用空白链接,但不能使用页面链接

Jquery 添加和删除类可以使用空白链接,但不能使用页面链接,jquery,Jquery,我对jquery真的很在行,但我通过阅读Stackoverflow的有价值用户创建的旧帖子,几乎竭尽全力地解决了这个问题。 我的问题是我试图添加类onclick事件。仅当我将超链接设置为空白(#)时,它才起作用,但如果我将超链接状态设置为时,请尝试单独使用以下命令,并删除$('ul#menu li a')。removeClass('active') 尝试单独使用以下命令,并删除$('ul#menu li a')。removeClass('active') 您应该只使用$(此)。切换('activ

我对jquery真的很在行,但我通过阅读Stackoverflow的有价值用户创建的旧帖子,几乎竭尽全力地解决了这个问题。
我的问题是我试图添加类onclick事件。仅当我将超链接设置为空白(#)
时,它才起作用,但如果我将超链接状态设置为
时,请尝试单独使用以下命令,并删除
$('ul#menu li a')。removeClass('active')


尝试单独使用以下命令,并删除
$('ul#menu li a')。removeClass('active')


您应该只使用
$(此)。切换('active')
,您不需要上一条语句

您应该只使用
$(此)。切换('active')
,您不需要上一条语句

这对我很有用

var url = window.location.href;
  url = url.substr(url.lastIndexOf("/") + 1);
  $("#menu").find("a[href='" + url + "']").addClass("active");
只需将脚本包含到每个页面中,它就会添加
活动类来反映当前位置。不需要切换任何东西

我的猜测为什么你的代码不起作用:你点击一个链接,所有东西都可能起作用,除了链接指向另一个页面,你的jQuery函数被“重新加载”,没有任何东西不再被点击。如果您正试图实现单页网站,请参见示例:

    • 这对我很有用

      var url = window.location.href;
        url = url.substr(url.lastIndexOf("/") + 1);
        $("#menu").find("a[href='" + url + "']").addClass("active");
      
      只需将脚本包含到每个页面中,它就会添加
      活动类来反映当前位置。不需要切换任何东西

      我的猜测为什么你的代码不起作用:你点击一个链接,所有东西都可能起作用,除了链接指向另一个页面,你的jQuery函数被“重新加载”,没有任何东西不再被点击。如果您正试图实现单页网站,请参见示例:


      您面临的问题是在加载example.com/product.php后,active类没有保留在相应的锚定标记中,因为加载时javascript不会将旧页面的状态转移到新页面。你可以用两种方法来做

    • 您可以禁用页面加载并保持在同一页面中

      $('ul#menu li a').click(function(e) {
          e.preventDefault();//this will stop the current event which is your page load
          $('ul#menu li a.active').removeClass('active');//this will remove the active class from only a tag having active as class
          $(this).toggleClass('active');
      });
      
    • 页面加载后,找出您所在的页面,并为相应的a标记设置活动类

      (function($){
           //highlight the current tab
           var l = window.location.pathname,
           str = l.slice(l.lastIndexOf('/')+1,l.length);
      
          $('ul#menu li a.active').removeClass('active');//remove active from home page link
          $('#menu').find('a[href="'+str+'"]').addClass('active');
      })(jQuery);
      

    • 您所面临的问题是,在加载example.com/product.php之后,active类不会保留在相应的锚标记中,因为javascript在加载时不会将旧页面的状态转移到新页面。你可以用两种方法来做

    • 您可以禁用页面加载并保持在同一页面中

      $('ul#menu li a').click(function(e) {
          e.preventDefault();//this will stop the current event which is your page load
          $('ul#menu li a.active').removeClass('active');//this will remove the active class from only a tag having active as class
          $(this).toggleClass('active');
      });
      
    • 页面加载后,找出您所在的页面,并为相应的a标记设置活动类

      (function($){
           //highlight the current tab
           var l = window.location.pathname,
           str = l.slice(l.lastIndexOf('/')+1,l.length);
      
          $('ul#menu li a.active').removeClass('active');//remove active from home page link
          $('#menu').find('a[href="'+str+'"]').addClass('active');
      })(jQuery);
      

    • 为什么首先要删除类而不是toggleclass??您需要在重定向页面中的特定链接处手动(静态)添加
      active
      类,或者通过发送带有url的查询字符串并在重定向页面中获取它们(动态)我想删除设置为默认为home的活动类,并在单击链接时删除它,并将活动类添加到我单击的活动类中。@注册用户为什么首先删除类而不是toggleclass??您需要在重定向页面中的特定链接处手动(静态)添加
      活动类,或者通过发送带有url的查询字符串并在重定向页面中获取它们(动态)我想删除设置为默认为home的活动类,并在单击链接时删除它,并将活动类添加到我单击的活动类中。@注册用户我试过你的代码。并添加了类似于$('ul#menu li a')的内容;我甚至添加了警告(“地狱”);检查代码是否正常工作。。如果警报在函数内部,则不会弹出消息,但如果警报在函数外部,则会弹出消息。。我遗漏了什么:(请告诉
      如代码所示..您的代码仅在空白链接上工作,而不与任何页面的超链接一起工作,就像我尝试了您的代码一样。并添加了类似$('ul#menu li a')。单击(function(){alert(“hell”)$(this)。切换类('active');});我甚至添加了警报(“hell”);检查代码是否工作。如果警报在函数内部,则不会弹出消息,但如果警报在函数外部,则会弹出消息。我缺少什么:(请告诉
      如代码所示..您的代码仅在空白链接上工作,如omg,但不使用指向任何页面的超链接。非常感谢..:)第二个很好:)。非常感谢。非常感谢第二个很好用。非常感谢。非常感谢你的宝贵意见。我想我的英语有点差。希望你不觉得很难理解我的帖子。我要衷心感谢:)非常感谢你的宝贵意见。我想我的英语有点差。希望你不觉得很难理解我的帖子。我要衷心感谢:)