我正在编写一个多级推送菜单的脚本,但遇到了麻烦。
结构:
菜单A链接1->打开菜单B
菜单A链接2->打开菜单C
etc
当我点击链接1时,它会打开菜单B,当我单击链接2时,它关闭菜单B并打开菜单C。好的
当我点击链接1时,它会打开菜单B,但当我再次点击链接1,我只希望它关闭所述菜单,而不是再次打开。
因此,我将为该级别存储打开的菜单(div存储在全局var$2real中),并存储为同一级别打开的目标菜单(div保存在全局var%2target中),在调用函数打开菜单之前,我添加了一个if($2target!=$2real)(这样它就不会再打开同一菜单)。
使用console.log,我可以看到$2target和$2real确实是一样的,但if无论如何都能做到。我使用(1!=1)进行了测试,它有效,所以我想问题出在($2target!=$2real)上。
我可以发布代码,但它越来越大了。(而且不是漂亮,因为我没有太多经验)
因为您比较的是jQuery对象,而不是元素
if ($2target.get(0) != $2real.get(0))
或使用is()
if ($2target.is($2real))
我在我的一个项目中这样做。我的代码看起来像这个
function toggleSublinks(link){
var href = $(link).attr('href');
$target = $(href);
if($target.hasClass('active')){
$target.slideUp().removeClass('active');
} else {
$('.top-link').slideUp().removeClass('active');
$target.slideDown().addClass('active');
}
}
然后在文档准备功能中
$('.top-link').click(function(e){
e.preventDefault();
toggleSublinks(this);
});