0

いくつかのアニメーションを実行している間、要素をクリックしないようにして、後で有効にしたい。アンバインドしてからバインドしようとしましたが、クリックが永久に無効のままです。それを行う他の方法はありますか?

$("something").on("click", function() {
    $("selected").unbind("click");
    $("selected").animate({...}, function() {
        $("selected").unbind("click");
    });

基本的に、アニメーションの進行中に誰かが選択した div をクリックしないようにします。これをクリックすると、途中で開始したくない別のアニメーション セットが開始されるためです。

4

5 に答える 5

1

アニメーションが発生している場合は、フラグ変数を使用して情報を保存して、これを試してください。

var animating = false;
$("something").on("click", function () {
    animating = true;
    $("selected").animate({...
    }, 1000, function () {
        animating = false;
    });
});
$("selected").click(function(){
    if (animating) return false;
});
于 2013-10-19T06:36:49.537 に答える
1

このように on と off を使用すると、関数 foo を特定の要素のクリック イベントに「バインド」し、好きなだけ何度でもオフにしてからオンに切り替えることができます。楽しむ ;-)

デモ: http://jsfiddle.net/4yBbb/2/

var foo = function() {
// Code to handle some kind of event
};
// ... Now foo will be called when paragraphs are clicked ...
$( "p" ).on( "click", foo );
// ... Foo will no longer be called.
$( "p" ).off( "click", foo );

編集:回答を更新しました。私の例では委任を使用していましたが、これは必要ありませんでした。

あなたの例に適用すると、次のようになります。

$("something").on("click", function() {
    $("selected").off( "click", foo );
    $("selected").animate({...}, function() {
        $("selected").on( "click", foo );
    });
于 2013-10-19T06:49:31.003 に答える
0

jquery の .on() & .off() イベントを使用します。ここにJquery APIの例があります

次のようにする必要があります。

function flash() {
  // do your stuff here
}  
$("something").on("click", function() {
    $( "body" ).off( "click", "Your Div Selector", flash );
});
$("something").on("click", function() {
    $( "body" ).on( "click", "Your Div Selector", flash );
});
于 2013-10-19T06:47:41.917 に答える
0

クリックは永久に無効のままです。

"click"に再度バインドすることはありません$("something")。試す:

$("something").on("click", function animate() {
    var _this = $(this);
    _this.off("click");
    $("selected").animate({...}, function() {
        _this.on("click",animate);
    });

ここでは、名前付き関数を使用して、関数を再度簡単に参照できるようにしています。

于 2013-10-19T06:50:01.580 に答える
0

clickクリックされた要素がアニメーションしていない場合にのみアニメーションを実行するように、関数にチェックを追加するのはどうですか?

$("something").on("click", function() {
    $("selected").animate({...});
});

$("selected").on("click",function(){
    if(!$(this).is("selected:animated")){
    //Start other animation
    }
});

デモフィドル

于 2013-10-19T06:50:30.520 に答える