您好我有这个jQuery:
var $burger = $('#burger'),
$body = $('body'),
$main = $('main'),
$menu = $('menu'),
$menuItem = $('.nav__item--parent'),
$trigger = $('.nav__item--parent > a'),
$subMenu = $('.nav__sub-menu');
$burger.click(function() {
return $body.toggleClass('active');
return false
});
$('.nav__item--parent > a').click(function() {
$('.nav__item--parent.open').removeClass('open');
$(this).closest('li').toggleClass('open');
$main.toggleClass('push-down');
});
如果他们再次点击相同的li,我需要删除.push-down。
///更新///
我现在使用下面的答案(谢谢)来实现这个目标
$('.nav__item--parent > a').click(function() {
var $li = $(this).closest('li');
$main.toggleClass('push-down', $li.hasClass('open'));
$('.nav__item--parent.open').removeClass('open');
$li.toggleClass('open');
$main.toggleClass('push-down');
});
现在的问题是,如果他们点击了一个正确切换按下的li,我需要删除.open? : - /
答案 0 :(得分:0)
在进行切换之前,请检查距"open"
最近的li
hasClass()
状态boolean
。如果您将toggleClass
秒参数传递给true
,则会根据false
或$('.nav__item--parent > a').click(function() {
var $li = $(this).closest('li');
$main.toggleClass('push-down', $li.hasClass('open'));
$('.nav__item--parent.open').removeClass('open');
$li.toggleClass('open');
});
值设置或清除该类。
e.g。
LI
注意:在最后一部分中,toggleClass在技术上并不正确(因为它之前被行清除,所以只设置它)。您想要使用.not()
$('.nav__item--parent > a').click(function() {
var $li = $(this).closest('li');
$main.toggleClass('push-down', $li.hasClass('open'));
$('.nav__item--parent.open').not($li).removeClass('open');
$li.toggleClass('open');
});
e.g。
{{1}}