2016-07-26 106 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