0

ビューには、次のクラスがあります

.class{"data-id" => time.id}

ビューの最後で、ライブクリックイベントを有効にします

$('.class').live("click", function() {
    window.orc.time.stopCount();
    window.orc.time.whenClicked(#{class.id}, #{class.time}, #    
{class.start});});

coffeescriptには次の機能があります

time.whenClicked = (class.id, time_dur, time_start) -> 
   ct = time_entries.to_time(time_dur, time_start)
   $("div[data-id=#{time_id}]").addClass "ajax"
   $("div[data-id=#{time_id}]").html("<input id=\"editbox\" size=\"8\" type=\"text\" value=\"#{ct}\">") 
   $("#editbox").bind "keyup", (event) ->
     ...

whenClicked 関数では、 live("click") を無効にする必要があります。私が試したら

$(".class").die("click") 

それは機能しますが、ページを更新した後にのみクリックイベントが再度有効になります。それは私が必要とするものではありません。

関数が実行されるまでクリックイベントを無効にする解決策はありますか?

4

1 に答える 1

2

ハンドラーを無効にしないでください。メソッドがすでに実行されているかどうかがわかるように、ブールフラグを実装するだけです。その場合、ハンドラーからすぐに戻ることができます。

var isBusy = false;

$('.class').live('click', function(){
    if(isBusy) return;
    isBusy = true;
    window.orc.time.stopCount();
    window.orc.time.whenClicked(/* some params */);
    isBusy = false;
});
于 2012-09-26T14:25:57.490 に答える