2016-07-26 108 views
-2

我很难找到任何有助于解决此问题的信息。我尝试了其他几种可以在这里为其他人工作的选项,但它似乎并没有工作。.removeClass不工作,并阻止.addClass工作

我有一个div设置是这样的:

<div class="dynamic-content"> 
     <div class="button"></div> 
     <div class="content"></div> 
    </div> 

我试图做的是应用CSS动画。动态内容.button被点击时,通过添加特定阶级,然后再次单击.button删除该动画并删除特定的类。

这里是我的jQuery:

$(".button").on('click', function() { 
     if ($(".dynamic-content").hasClass('open')) { 
      $(".dynamic-content").removeClass('open')); 
     } else { 
      $(".dynamic-content").addClass('open')); 
     } 
    } 

如果我不包括.removeClass()的一部分,addClass完美的作品。但是,一旦我将.removeClass放入检查器中,我就会看到.dynamic-content点亮,就好像JS有针对性并采取行动一样,但没有任何反应,甚至没有.addClass正在运行。

+2

你如何调试?因为你的发布代码中有明显的错字,所以?! –

+0

嘿,谢谢你指出了!我认为这是一个问题,我在这里重新输入代码。不过,我确实仔细检查了我的代码,以确保我没有任何额外的括号。 – VeryOddlySpecific

+0

其他问题可能是因为你有'.button'嵌套元素,所以每次点击都会触发两次事件hanlder。或者你有任何其他的点击处理程序绑定到任何父母再次切换此类。如果你添加:'$(“。button”)。on('click',function(e){e.stopPropagation();/*其余代码* /});' –

回答

3

那是因为你在你的代码在行有错误:

$(".dynamic-content").removeClass('open')); 
             //^Remove extra brace 

删除多余的空格,你是好去。

您也可以通过使用.toggleClass()优化代码:

$(".button").on('click', function() { 
    $(".dynamic-content").toggleClass('open'); 
}); 
+0

嘿米林德,我删除了额外的大括号,并切换到.toogleClass,但我仍然遇到同样的问题。当点击它时,检查员显示元素闪烁,但它什么都不做。 – VeryOddlySpecific

+0

@BeardedWineGuy:你能在小提琴中重现问题吗? –

+0

@MiliandAnantwar:我感到很可怕,我很抱歉浪费你的时间;我再次抓住我的代码插入小提琴,并意识到我正在调用我的.js文件两次。我删除了第二个电话,它修复了一切。 – VeryOddlySpecific

0

JS:

$(".button").on('click', function() { 
     if ($(".dynamic-content").hasClass('open')) { 
      $(".dynamic-content").removeClass('open'); 
     } else { 
      $(".dynamic-content").addClass('open'); 
     } 
    }); 
+0

感谢您指出我在上面的代码中有效使用的大括号问题。我最终意识到我正在调用我的.js文件两次,这是导致问题的原因。 – VeryOddlySpecific

+0

太好了。我很高兴脚本现在在工作。 :) – ristapk

0

是否有条件工作?因为“.dynamic-content”是一个类,所以jQuery将得到它找到的第一个。也许在网页上还有另一个,它与你的条件?

正如人们所说的,另一件可能发生的事情是您的额外“)”正在破坏您的功能。

无论哪种方式,我会尝试toggleClass相反,它确实你的病情究竟是干什么的:

$(".button").on('click', function() { $(".dynamic-content").toggleClass("open") }

如果类是存在的,它会删除它,如果没有,它增加了它。

+0

感谢您指出我在那里的支架问题。我认为这是一个与我的代码在stackoverflow转录问题,但这是一个问题。事实证明,虽然,我最大的问题是我的监督没有意识到我曾经两次打我的.js文件。一旦我解决了这个问题,我的问题就解决了。但是,我切换到了.toggleClass方法。 – VeryOddlySpecific