Javascript addClass工作,但不是removeClass

Javascript addClass工作,但不是removeClass,javascript,jquery,Javascript,Jquery,我正在尝试使用addClass和removeClass创建切换高亮效果 <head> <style> .box-highlight { border: 2px solid yellow; } </style> <script type="text/javascript" src="javascript/vendor/jquery-2.0.2.js"></scrip

我正在尝试使用addClass和removeClass创建切换高亮效果

<head>
    <style>
        .box-highlight {
            border: 2px solid yellow;
        }
    </style>
    <script type="text/javascript" src="javascript/vendor/jquery-2.0.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $('#box').bind('click', function() {
                if ($(this).hasClass('box-highlight')) {
                    $(this).removeClass('box-highlight');
                }
                $(this).addClass('box-highlight');
            });
        });
    </script>
</head>
<body>
    <div id="box" style="width: 100px; height: 100px; background-color: silver">

    </div>
</body>

.方框突出显示{
边框:2倍纯黄色;
}
$(文档).ready(函数(){
$(“#框”).bind('click',function(){
if($(this).hasClass('box-highlight')){
$(this.removeClass('box-highlight');
}
$(this.addClass('box-highlight');
});
});

addClass工作正常,但removeClass工作不正常。我知道有一个toggleClass方法,但我只是想知道这段代码有什么问题。

您的代码的问题是它运行得非常快,您不会看到效果:)。 要产生这样的效果,可以使用计时器或延迟。例如,您可以这样做:

  $("#box").addClass("box-highlight")
      .delay(300).queue(function(next){
      $(this).removeClass("box-highlight");
      next();
  });

您将删除该类,然后毫不延迟地将其添加回,然后才能重新绘制UI。您需要执行一个或另一个操作,这表示一个
else

if ($(this).hasClass('box-highlight')) {
  $(this).removeClass('box-highlight')
} else {
  $(this).addClass('box-highlight')
}

试试这个

$(document).ready(function() {
        $('#box').bind('click', function() {
            if ($(this).hasClass('box-highlight')) {
                $(this).removeClass('box-highlight');
            }else{
            $(this).addClass('box-highlight');
            }
        });
    });

您如何知道
removeClass()
不起作用?您正在删除该类,然后立即再次添加它。当然,当函数完成执行时,元素仍然会有类。是的,我忘记了else部分。谢谢