使用两个var作为if的比较运算符



我正在编写一个多级推送菜单的脚本,但遇到了麻烦。

结构:

菜单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);
});

最新更新