0

jQuery に紛らわしい問題があり、基本的にこのコードは 2 つの要素に追加され、正常に動作しますが、別の要素をクリックすると機能しないようにしたいので、これらの要素からクラスを削除すると機能しなくなると思いましたが、クラスがなくても、まだ機能しています...ここにいくつかのコードがあります。

$(".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");
});

何か案は?

4

3 に答える 3

1

.unbind() を実行してみてください。このように見えます。

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

.unbind() http://api.jquery.com/unbind/の詳細を読むことができます

于 2012-05-10T14:14:26.573 に答える
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);
于 2012-05-10T14:13:58.183 に答える
0

要素にクリック イベントを既にアタッチしているため、クラスを削除しても役に立ちません。

削除するには unbind を使用する必要があります

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

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

于 2012-05-10T14:18:17.230 に答える