Jquery:toggleclass 但不在此 child。我该怎么做?
Jquery: toggleclass but not on this child. How do I do it?
我正在做一个简单的响应式 multi-level 菜单,我正在使用切换class 打开子菜单。
我想要的是,当我点击菜单打开子菜单时,如果有其他子菜单打开,它们会关闭,除了我刚刚打开的子菜单和可以通过单击其菜单 parent.
来关闭此子菜单
我目前使用这个代码:
$(document).ready(function(){
$(".menu > li").click(function(){
$(".submenu.show-menu").toggleClass("show-menu"),
$(this).children(".submenu").toggleClass("show-menu")
;
});
});
JSFiddle: https://jsfiddle.net/g7d3wmnc/
尝试通过单击菜单打开子菜单。然后单击另一个菜单以打开其子菜单。查看您打开的上一个子菜单如何关闭。这是正确的。 现在尝试通过单击其菜单来关闭刚刚打开的子菜单。你会看到它不起作用。就是这个问题。
此代码的问题是,如果我打开一个子菜单然后打开另一个子菜单,我打开的前一个子菜单将关闭。这样可行。 但是我无法关闭刚刚打开的子菜单,除非我打开另一个子菜单等等。
我认为是因为这一行:
$(".submenu.show-menu").toggleClass("show-menu"),
此代码将看到我打开的当前子菜单有 class show-menu 并将继续关闭 class,因为子菜单不再有 [=60] =],下一行代码将继续打开 class,这是应该的。
那么,我该如何防止这种情况发生呢?我想如果我可以排除我正在单击第一行代码的菜单的子菜单,那么它将按我想要的方式工作,但我不知道该怎么做.我是 Jquery.
的新手
我试过了:
$(".submenu.show-menu").not(this).toggleClass("show-menu")
$(".submenu.show-menu").not(this).children(".submenu").toggleClass("show-menu")
这是我正在尝试的网站: http://etrostruewowdesigncomplete2.esy.es/phpBB3/index.php?sid=2ae138c61784f734c9d98c0944359e42
只有window的尺寸在999px以下才能看到响应式菜单,需要在放大镜上click/tap才能打开(主题还没画完) )
那里。
这段代码应该更适合您:
$(document).ready(function(){
$(".menu > li").click(function(){
$(".submenu").removeClass("show-menu");
$(this).children(".submenu").toggleClass("show-menu");
;
});
});
在您使用的代码中
$(".submenu.show-menu").not(this).toggleClass("show-menu");
到 select 个元素显示除活动元素以外的菜单。这是错误的,因为 this 在这种情况下指的是 span 元素。这是一个工作演示。
https://jsfiddle.net/8fx2u56w/
但我猜你希望得到像 https://jsfiddle.net/6Lu8ajp2/
这样的解决方案
我正在做一个简单的响应式 multi-level 菜单,我正在使用切换class 打开子菜单。
我想要的是,当我点击菜单打开子菜单时,如果有其他子菜单打开,它们会关闭,除了我刚刚打开的子菜单和可以通过单击其菜单 parent.
来关闭此子菜单我目前使用这个代码:
$(document).ready(function(){
$(".menu > li").click(function(){
$(".submenu.show-menu").toggleClass("show-menu"),
$(this).children(".submenu").toggleClass("show-menu")
;
});
});
JSFiddle: https://jsfiddle.net/g7d3wmnc/ 尝试通过单击菜单打开子菜单。然后单击另一个菜单以打开其子菜单。查看您打开的上一个子菜单如何关闭。这是正确的。 现在尝试通过单击其菜单来关闭刚刚打开的子菜单。你会看到它不起作用。就是这个问题。
此代码的问题是,如果我打开一个子菜单然后打开另一个子菜单,我打开的前一个子菜单将关闭。这样可行。 但是我无法关闭刚刚打开的子菜单,除非我打开另一个子菜单等等。
我认为是因为这一行:
$(".submenu.show-menu").toggleClass("show-menu"),
此代码将看到我打开的当前子菜单有 class show-menu 并将继续关闭 class,因为子菜单不再有 [=60] =],下一行代码将继续打开 class,这是应该的。
那么,我该如何防止这种情况发生呢?我想如果我可以排除我正在单击第一行代码的菜单的子菜单,那么它将按我想要的方式工作,但我不知道该怎么做.我是 Jquery.
的新手我试过了:
$(".submenu.show-menu").not(this).toggleClass("show-menu")
$(".submenu.show-menu").not(this).children(".submenu").toggleClass("show-menu")
这是我正在尝试的网站: http://etrostruewowdesigncomplete2.esy.es/phpBB3/index.php?sid=2ae138c61784f734c9d98c0944359e42
只有window的尺寸在999px以下才能看到响应式菜单,需要在放大镜上click/tap才能打开(主题还没画完) )
那里。
这段代码应该更适合您:
$(document).ready(function(){
$(".menu > li").click(function(){
$(".submenu").removeClass("show-menu");
$(this).children(".submenu").toggleClass("show-menu");
;
});
});
在您使用的代码中
$(".submenu.show-menu").not(this).toggleClass("show-menu");
到 select 个元素显示除活动元素以外的菜单。这是错误的,因为 this 在这种情况下指的是 span 元素。这是一个工作演示。
https://jsfiddle.net/8fx2u56w/
但我猜你希望得到像 https://jsfiddle.net/6Lu8ajp2/
这样的解决方案