2016-08-12 6 views
0

私は2つのjquery関数を持っています。最初の関数を呼び出すと、クラスが削除され、2つのonclick属性が変更されます。jquery addClass()removeClass()の後に動作しません

しかし、クラスを削除する関数を呼び出した後、2番目の関数は機能しないので、クラスをもう追加できなくなり、onclickイベントも発生します。

編集1:既に述べたように、最初の機能が動作しています。 onclickイベントが変更され、クラスが削除されています。 2つ目の関数内で同じクラスと関数を再度追加すると機能しません!新しいクラスを追加すると機能しますが、削除されたクラスまたは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する場合は、jQueryを使って属性をonclick' '設定する必要はありませんすべて – ristapk

+0

で問題を見てください。要点は、イベントメソッドのセットを提供することです。https://api.jquery.com/category/events/mouse-events/ – BadHorsie

+0

@BadHorsieしかし、これは実際にはクラスのための解決策ではなく、これは主な質問でした! – moritzm3

答えて

2

登録クリックイベントにはattrを使用しないでください。 clickまたはonを使用してください。

// 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

関連する問題