2016-08-12 172 views
0

我有兩個jQuery的功能。當調用第一個函數時,類將被刪除,並且兩個onclick屬性正在被更改。jquery addClass()removeClass()後不工作

但是在調用函數來移除類之後,第二個函數將不起作用,所以這些類不能再被添加,並且onclick事件也會被添加。

編輯1:如前所述,第一個功能正在工作! onclick事件正在改變,這些類正在被刪除。在第二個函數中再次添加相同的類和函數時不起作用!當添加一個新的類時,它正在工作,但當添加一個刪除的類或onclick事件時它不起作用!

下面的代碼:

// show info 
function showKursInfo() { 
    $(".kright").removeClass("kursMobileOpen"); 
    $(".kleft").removeClass("kursMobileInfo"); 

    $(".kright").attr("onclick","#"); 
    $(".kheader").attr("onclick","hideKursInfo('someInfo');"); 
} 
// hide info 
function hideKursInfo() { 
    $(".kright").addClass("kursMobileOpen"); 
    $(".kleft").addClass("kursMobileInfo"); 

    $(".kright").attr("onclick","showKursInfo('someInfo');"); 
    $(".kheader").attr("onclick","#"); 
} 

感謝您的幫助!

對那些不喜歡這個問題的人:請告訴我爲什麼這是一個糟糕的問題?

+0

請添加HTML代碼,如果可能的添加到codepen或在的jsfiddle所有 – ristapk

+0

你並不需要設置'用jQuery onclick'屬性看問題。總的來說,它提供了一組事件方法:https://api.jquery.com/category/events/mouse-events/ – BadHorsie

+0

@BadHorsie但是這實際上不是解決方案,因爲類,這是主要問題! – moritzm3

回答

2

請勿使用attr註冊點擊事件。使用clickon

// show info 
function showKursInfo() { 
    $(".kright").removeClass("kursMobileOpen"); 
    $(".kleft").removeClass("kursMobileInfo"); 

    $(".kright").off("click"); 
    $(".kheader").on("click", hideKursInfo); 
} 

// hide info 
function hideKursInfo() { 
    $(".kright").addClass("kursMobileOpen"); 
    $(".kleft").addClass("kursMobileInfo"); 

    $(".kright").on("click", showKursInfo); 
    $(".kheader").off("click"); 
} 
+0

而這並不能解決類的問題原因。 – moritzm3

+0

然後你應該給我們更多的代碼,錯誤或其他東西。因爲它正在以這種方式工作。看到這裏:https://jsfiddle.net/wejLjrxr/ @ moritzm3 – eisbehr

+0

而要證明,你的舊代碼,它不工作:https://jsfiddle.net/wejLjrxr/1/ @ moritzm3 – eisbehr