0

jqueryを使用してクリックイベントでajaxイベントを発生させる関数をいくつか作成しました。問題は、クリックが十分に速い場合、イベントが2回発生し、これが発生しないことです:)。フラグ変数を追加してこれを回避しようとしましたが、本当に速い場合は機能しません。これが私の関数の例です:

action_flag = 0;

$('#available_clicks').delegate('.available_click', "click", function(ev)
{
    if(action_flag==1)
    { 
        ev.stopPropagation();
        return;
    }
    action_flag=1;
    somefunction();
});

いくつかの関数の終わりには、action_flag=0命令があります。ユーザーが十分に速くクリックしたときにいくつかの機能が二重に起動するのを防ぐための解決策を教えてください。:)

編集:

今、私はそれをそのようにやっています:

$('#available_clicks').delegate('.available_click', "click", function(ev)
{
   $("#available_clicks").on("click", ".available_click",somefunction())); 
   $("#available_clicks").off("click", ".available_click");
});

ただし、2回目のクリック後にエラーが発生します:/

4

2 に答える 2

2

.one() jQuery役立つ機能をご覧ください。

説明:要素のイベントにハンドラーをアタッチします。ハンドラは要素ごとに最大 1 回実行されます。

また

使用できます.off();

説明:イベント ハンドラーを削除します。

編集

$('#available_clicks').on("click",'.available_click', function(ev)
{
   $("body").off("click", ".available_click");
});
于 2013-03-18T12:17:46.843 に答える
0

ボタンを無効にすることもでき (これは関数の最初のステートメントです)、ajax 呼び出しが成功した場合は、再度有効にすることができます。

于 2013-03-18T12:22:38.533 に答える