Javascript 动画图标don';不要在点击按钮时选择他原来的位置
我有一个手风琴菜单,每个父菜单都有一个图标,这个图标用css转换和变换来设置动画。我向click事件添加了一个带有if条件的类。问题是,当我点击菜单1时,图标动画效果很好,但如果我直接点击菜单2,菜单2下拉菜单会出现,但菜单1中的图标不会占据其原始位置。 这个问题适用于每个菜单/子菜单中的每个图标,我认为我的代码中有一个错误Javascript 动画图标don';不要在点击按钮时选择他原来的位置,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个手风琴菜单,每个父菜单都有一个图标,这个图标用css转换和变换来设置动画。我向click事件添加了一个带有if条件的类。问题是,当我点击菜单1时,图标动画效果很好,但如果我直接点击菜单2,菜单2下拉菜单会出现,但菜单1中的图标不会占据其原始位置。 这个问题适用于每个菜单/子菜单中的每个图标,我认为我的代码中有一个错误 $(document).ready(function() { // Icons effect $('#mw_nav .toggle').click(func
$(document).ready(function() {
// Icons effect
$('#mw_nav .toggle').click(function() {
if($(this).hasClass('rotate_close'))
{
$(this).addClass('rotate_open').removeClass('rotate_close');
}
else {
$(this).addClass('rotate_close').removeClass('rotate_open');
}
});
// Toggle Menu Items
$(function () {
$("#m_nav > ul ul").hide();
$('#m_nav .toggle').click(function (e) {
e.preventDefault();
e.stopPropagation();
var $parentli = $(this).closest('li');
$parentli.siblings('li').find('ul:visible').slideToggle(400);
$parentli.find('> ul').stop().slideToggle(400);
$(this).remove;
});
});
});
任何帮助都将不胜感激请在第一次单击处理程序中使用此代码:
$('#mw_nav .toggle').click(function() {
$(this).toggleClass('rotate_close rotate_open');
if ($('#mw_nav .toggle').not(this).hasClass('rotate_open')) {
$('#mw_nav .toggle').not(this).removeClass('rotate_open').addClass('rotate_close');
}
});
我已经用一个工作示例更新了您的
干杯 我发现您的代码有两个问题。第一个建议是不要在$(document.ready()中包含$(function(){//your code})$(function(){})实际上只是$(document).ready()的简写,所以您添加的是不需要的代码 第二个是你的逻辑问题。
$('#mw#nav.toggle')
和$('#m#nav.toggle')
单击侦听器实际上是在相同的元素上添加一个单击侦听器,但两者运行的逻辑不同。当调用$('#mw_nav.toggle')
click listener时,它会检查类是否存在,以决定需要删除和添加哪个类。调用$('#m_nav.toggle')
click listener时,它调用当前嵌套
上的slideToggle函数,而不管是否打开或关闭另一个菜单,并且没有检查rotate_open/rotate_close类是否存在,从而允许交换这些类。旋转打开/旋转关闭类的交换与向上/向下滑动切换的逻辑之间没有关系
更新
我已经编辑了您的代码并进行了更新,现在可以在此处看到:
我在HTML中的顶级项目中添加了一类.top\u level
。我用它来区分顶级
和子菜单。接下来,在click事件侦听器的末尾,我检查单击的.toggle
元素是否为顶级元素,如果是,我将所有非当前选定的顶级元素作为目标,并确保它们具有.rotate\u close
类
谢谢您的时间,但现在如果我单击子菜单1,它会将菜单1图标重置为其原始位置,并且只要我在菜单1的子菜单中导航,我希望在单击后保留其药剂。我应该在子菜单图标中添加另一个类,还是有其他方法?谢谢你,好的。我删除了$(document).ready(函数)下的函数,并按照您提到的更新代码。现在,你有没有一个例子来说明你是如何做到的?谢谢@colapsnux,我已经更新了我的答案,包括一把小提琴和我所做更改的解释。我相信这会解决你的问题。