2012-05-10 2 views
0

jQueryと混乱する問題があります。基本的にこのコードは2つの要素に追加されていますが、別の要素をクリックするとうまくいきませんこれらの要素からのクラスはworkignからそれらを停止しますが、クラスがなくても、彼らはまだ動作しています...ここでいくつかのコード。.removeAttrクラスを削除するには、スクリプトがまだ動作しています

$(".q1a1, .q1a3").click(function (e) { 
e.preventDefault(); 
$(this).animate({ backgroundColor: "#db384b" }, 1000); 
$(this).animate({ backgroundColor: "#0F437D" }, 2000); 
$(this).children('.wrong').fadeIn(1000).fadeOut(2000); 
}); 

(それは理にかなっている場合)^私はすべてのアイデア

$(".q1a2").click(function (e) { 
e.preventDefault(); 
$(this).animate({ backgroundColor: "#00a6eb" }, 800); 
$('.q1a2 .correct').show(); 
$('.q1a1, .q1a3 ').removeAttr("class"); 
}); 

以下のコードをクリックした後、このコードは動作しないようにしたいですか?

答えて

0

すでに要素にクリックイベントを添付したように、クラスを削除すると、助けにはなりません。

あなたは、より堅牢な方法は、別のハンドラを作成して、あなただけのハンドラのバインド解除を行うことであろう

$('.q1a1, .q1a3 ').unbind("click"); 

http://api.jquery.com/unbind/

0

あなたは、別の関数で、これに似たものあなたのハンドラを宣言することができます)

var SomeFunction = function(e) { 
    e.preventDefault(); 

    // your function code goes here 

    $(this).unbind(SomeFunction); // and this removes the handler from the element on the first click 
}; 

$(".q1a1, .q1a3").click(SomeFunction); 
1

は(.unbindをやってみます。このようなものです。

$( '.q1a1、.q1a3').unbind( 'クリック');

あなたは(.unbindについての詳細を読むことができる)http://api.jquery.com/unbind/

+0

を削除するためにアンバインドを使用する必要があります。これにより、下流の問題が防止されます。上記のリンクは、良い例と関連する議論を提供します。 – user1020746

+0

私はそれが私の答えに示したものだと思います – MilkyWayJoe

関連する問題