4

まず第一に、このような同様の質問がたくさんあることを認識していますが、答えを理解できないか、jsfiddle の答えが機能しません!

私の質問はすばやく簡単です。クリックすると 2 つ目の div が右に移動する div があります。しかし、アニメーションの実行中にdivをクリックできないようにしたい。これが私のコードです:

$("#go").click(function() {
    $("#go").off()
   functionlist["flip"]()
    $("#go").on()
})​

しかし、div がクリック可能になることはありません。私は本当に言語を誤解しているだけですか?本当にありがとう!

http://jsfiddle.net/g5mJd/12/

run編集: クリックしたときに他の機能も実行し、プロセス中に無効にしたいので、アニメーション中に要素をクリックできないようにしたくありません。アニメーションは例としてのみ使用しました。

4

3 に答える 3

2

あなたは少し誤解して何on()をしていると思いますoff()on()削除したクリックハンドラーは復元されずoff()、新しいクリックハンドラーがアタッチされます。アタッチするハンドラーを提供する必要があります。

on()とを使用する代わりにoff()、この質問の解決策を使用してください:アニメーション中に要素をクリックできないようにする

于 2012-12-01T05:29:34.367 に答える
2

これは興味深いものでした。私を失望させたのは、メソッド遷移を使用しているため、:animated を評価できないことでした。クリック ハンドラーに以下を追加し、ここにフォークを提供しました。

var functionlist = {
    flip: function() {
        $("#block").transition({
            x: '+=100'
        }, 500, function(){$("#block").attr('data-animating', "false");});
    },
    flop: function() {
        $("#block").transition({
            rotateY: '0deg'
        }, 500)

    }
};


$("#go").click(function() {
    if ($("#block").attr('data-animating') !== "true") {
        console.log($("#block").attr('data-animating'));
        $("#block").attr('data-animating', "true");
        functionlist["flip"]();
    }
});​
于 2012-12-01T05:40:13.263 に答える
0

これは、JQuery の on/off メソッドの正しい使い方ではありません。ドキュメントをもう一度確認してください。

イベント名とハンドラ関数を on メソッドに渡すことになっています。

$("#id").on("click", function() {});

$("#id").off("クリック");

于 2012-12-01T05:34:07.647 に答える