javascript - 我可以在不使用 'this' 的情况下重写 Javascript 吗?

标签 javascript jquery wordpress

我对 JS 很陌生,我很难让它工作。

这是我的代码

jQuery('ul.menu li').each(function() {
jQuery(this).removeClass('current-menu-item');
jQuery(this).removeClass('current_page_item');
});
jQuery(this).parents('li').addClass('current_page_item');
jQuery(this).parents('li').addClass('current-menu-item');

现在应该做的是删除导航菜单上一个链接的突出显示,并突出显示被单击的链接(我有一个 AJAX 实现)。

由于某种原因它没有做任何事情。我有一种感觉,这是由于“这个”,是否有另一种方式来构造此代码,以便我可以确定代码是否错误(我不相信这是错误的),或者是因为“这个”?

编辑:

抱歉,看来我没有提供足够的信息。我使用的是二十四 WordPress 主题,但我使用 AJAX 提供页面。

http://twentyfourteendemo.wordpress.com/

我有全局应用的代码(我在同一位置有其他代码,可以在单击后切换导航(在移动设备上)并且工作正常)

我的菜单位于顶部(没有任何下拉菜单,只有链接)。我无法提供链接,因为它目前不是外部的。我的代码应该能够改变这个吗?

当一些人评论“‘这’是什么”时,我觉得我完全错过了一些东西。

最佳答案

您不需要循环每个项目来逐一删除类,这更容易:

jQuery('ul.menu li').removeClass('current-menu-item').removeClass('current_page_item');

或者(是一样的):

jQuery('ul.menu li').removeClass('current-menu-item current_page_item');

但我不明白这个“这个”是什么:

jQuery(this).parents('li').addClass('current_page_item');
jQuery(this).parents('li').addClass('current-menu-item');

你的意思是:

jQuery('ul.menu li').addClass('current_page_item current-menu-item');

或者,如果您在事件监听器上(例如点击,正如 @Daniel Sanchez 在评论中的感受),您只需要执行以下操作:

jQuery('ul.menu li').click(function(){   
  // Remove class on each item  
  jQuery('ul.menu li').removeClass('current-menu-item current_page_item');

  // Add class for this one    
  jQuery(this).addClass('current_page_item current-menu-item'); 
})

关于javascript - 我可以在不使用 'this' 的情况下重写 Javascript 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327974/

相关文章:

javascript - HTML5 Canvas 上的多个事件监听器

javascript - 查找最后输入的内容

javascript - 如何在 Bootstrap 上触发下拉按钮模糊/关闭事件?

javascript - 在已经将 jquery 作为全局变量的页面上添加使用 jquery 的 RequireJS 模块

javascript - 尝试将菜单页面添加到 WordPress 管理站点

javascript - 我在解析 JSON 时遇到错误

javascript - AngularJS:删除父元素

javascript - 在flot中动态创建数据集

php - Wordpress WP_Query/get_posts where post_title equals 返回所有结果

php - 在 WordPress 中更改类别下拉小部件中的默认 "Select Category"文本