Javascript Jquery在单击时切换类,并在单击其他菜单项时删除类

Javascript Jquery在单击时切换类,并在单击其他菜单项时删除类,javascript,jquery,Javascript,Jquery,我的代码是: $(document).ready(function() { $(".more").click(function(e) { $(this).toggleClass("open"); if (!$(".more").hasClass(".icon-arrow-down")) { // alert('Yep has class'); $(this).toggleClass("icon-arrow-d

我的代码是:

$(document).ready(function() {
    $(".more").click(function(e) {
        $(this).toggleClass("open");
        if (!$(".more").hasClass(".icon-arrow-down")) {
            // alert('Yep has class');
            $(this).toggleClass("icon-arrow-down");
            $(this).toggleClass('icon-arrow-up');
        } 
        else { 
            // alert('all ok');
        }    
    });
});
我在测试一些东西的时候有点乱。基本上我有一个菜单,有一个
。更多的
类用于下拉列表。移动用户单击“更多”,这会在菜单中添加一类
。打开
,以便人们可以看到它。现在我的问题是,这段代码似乎不是100%都能正常工作

有时,这些类会变得混乱,我会打开一个菜单,但仍然会出现一个向下的
图标类

另外,如果单击另一个
more
按钮,我将如何添加一些内容以删除
open


一如既往地感谢您的帮助。

您不应该只是检查当前元素是否具有.icon向下箭头类吗。所以而不是

if (!$(".more").hasClass(".icon-arrow-down"))
这个

<>也许考虑使用< /P>
$(".more").click(function(e) {

        if( $(this).hasClass("open") ) {
            $(this).removeClass("open").addClass("closed");
        } else {
            // if other menus are open remove open class and add closed
            $(this).siblings().removeClass("open").addClass("closed"); 
            $(this).removeClass("closed").addClass("open");
        }

});
然后使用.open和.closed类设置箭头样式

小提琴


很简单,但向您展示了您可以做什么。

在菜单中,我总是使用以下内容:

$(document).ready(function() {
   $(".more").click(function(e) {
      if($(this).hasClass("open")) {
         // if it's open then just close it
         $(this).removeClass("open");
      } else {
         // if it's closed, then close everything else and open it
         $(".more").removeClass("open");
         $(this).addClass("open");
      }
      /* TODO: now do something similar with icon-arrow */
   });
});

您可以从所有中删除类
。打开
,然后将其添加到单击的类中:

$(document).ready(function() {
    var $more = $(".more");
    $more.click(function(e) {
        var $this = $(this);
        if ($this.hasClass("open") {
            $more.removeClass("open");
        } else {
            $more.removeClass("open");
            $this.addClass("open");
        }


    });
});

我得到一个语法错误,是因为这一行:if(this).hasClass(“open”){@Mat visual是的,对不起。注意到了它并修改了代码。这也抛出了一个语法错误,认为是var$(this)=$this;行吗?天哪…对不起。我的错。更正了。应该是
var$this=$(this)
$(document).ready(function() {
    var $more = $(".more");
    $more.click(function(e) {
        var $this = $(this);
        if ($this.hasClass("open") {
            $more.removeClass("open");
        } else {
            $more.removeClass("open");
            $this.addClass("open");
        }


    });
});