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

jbl*_*blz 2 javascript wordpress jquery

我是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');
Run Code Online (Sandbox Code Playgroud)

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

出于某种原因,它没有做任何事情.我有一种感觉,这是由于'这'有另一种方法来构造这个代码所以我可以解决代码是错误的,我不相信它,或因为'这'?

编辑:

道歉,似乎我没有提供足够的信息.我正在使用Twenty Fourteen wordpress主题,但我正在使用AJAX服务这些页面.

http://twentyfourteendemo.wordpress.com/

我有全局应用的代码(我在同一个地方有其他代码切换导航一旦点击(在移动设备上),并且工作正常)

我在顶部有菜单(没有任何下拉菜单,只有链接).我不能给出一个链接,因为它目前不是外部的.我的代码应该努力改变这个吗?

正如一些人评论"这是什么'这个'"我觉得我完全错过了一些东西.

Art*_*hur 5

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

jQuery('ul.menu li').removeClass('current-menu-item').removeClass('current_page_item');
Run Code Online (Sandbox Code Playgroud)

或者(它是一样的):

jQuery('ul.menu li').removeClass('current-menu-item current_page_item');
Run Code Online (Sandbox Code Playgroud)

但我不明白这是什么'这个':

jQuery(this).parents('li').addClass('current_page_item');
jQuery(this).parents('li').addClass('current-menu-item');
Run Code Online (Sandbox Code Playgroud)

你的意思是 :

jQuery('ul.menu li').addClass('current_page_item current-menu-item');
Run Code Online (Sandbox Code Playgroud)

或者,如果您正在使用事件监听器(例如点击,如@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'); 
})
Run Code Online (Sandbox Code Playgroud)

  • 如果操作代码不起作用,则没有理由这样做 (3认同)