2016-06-24 4 views
0
$("#button1").click(function(e) 
{ 
//action 
}); 
$("#button2").click(function(e) 
{ 
//do something 
    $("#button1").click(function(f) 
    { 
    //do something else 
    }); 
}); 

ボタン2をクリックすると、最初の機能が実行されずに次のクリックで別のタスクを実行するためにボタン1が必要です。 提案がありますか?複数のクリックイベントを同じ要素で使用できますか?

+0

なぜボタン2をクリックするだけでいいのですか?最初にボタン2をクリックする必要があるときにボタンにバインドする必要があるのはなぜですか? – guradio

+0

'$("#button2 ")'で定義されたイベントで 'unbind("クリック ")します。 –

答えて

0

、あなたはボタン1または2を使用すると、使用できる一つの方法は、ボタンに新しいイベントリスナーを追加する前にすべてのイベントリスナーのバインドを解除することです

var btn = 1; // default 
$("#button1").click(function(e) 
{ 
    if(btn){ 
    #button1 click 
    } 
    else{ 
    #after button2 click 
    } 
}); 
$("#button2").click(function(e) 
{ 
    btn = 2; //change value after button2 click 
}); 
+0

ありがとうman.simpleと簡単に、完全に働いた。 –

0

jQueryの.on()および.off()機能を調べることをお勧めします。

http://api.jquery.com/on/

http://api.jquery.com/off/

それは、上記のリンク「OFF」、あなたのクリックイベントのために名前空間を作成することができますので、あなたが好きなイベントのオンとオフだけで、特定の追加や削除することができますで言うように。このような何か:

$("#button1").on("click.myName", function(e){ 
     //action 
}); 

$("#button2").click(function(e){ 
    //do something 

    $("#button1").off("click.myName").on("click.myOtherName", function(e) { 
     //do something else 
    }); 

}); 

これは、あなたがより直接的にあなたのクリックイベントをターゲットとすることができますし、すべてのクリックイベントを一掃、一般的に.off()を呼び出しません。そのために

0

をクリックしているかどうかを検出するための一つの変数のスコープを使用する必要がありますあなたは変更したい。

これは、Jqueryのon()およびoff()関数を使用して行うことができます。あなたは、ボタン2で同じことを行うことができます

$("#button1").off('click').on('click',function(e) 
{ 
    //action 
}); 

...これにより

$("#button2").off('click').on('click',function(e) 
{ 
    //action 
    $("#button1").off('click').on('click',function(e) 
    { 
     //action 
    }); 
}); 

、あなたが設定されているクリックの最後には、あなたがその要素をクリックしたときに発生する唯一のものです。

0

あなたは、私はこれがあなたのために働くだろう願っています一度

$("#button1").click(function(e) 
{ 
//action 
}); 
$("#button2").click(function(e) 
{ 
//do something 
    $("#button1").unbind(); 
    $("#button1").bind('click', function(f) 
    { 
    //do something else 
    }); 
}); 

これを試してください。

関連する問題