我对 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/