2016-08-17 4 views
1

は、私はIDが「BTN」であり、私のように、ボタンにイベントを追加ボタンを持っていると言います。

初めてボタンをクリックすると、現在の秒がラベル1に表示されます。このボタンをクリックすると、何も起こりません。しかし、ボタンがクリックされるたびに、ラベル1に新しい現在の秒が表示されます。どうしましたか?

+0

「HTML」を表示できますか? – Script47

+0

前のイベントの登録を解除する必要があります。2つのイベントハンドラを登録して、クリックするたびに発生するようにしてください。 – Dellirium

+0

@ Script47編集済み。ちょうどあなたが実際のコードに当てはまるかどうかわかりません。タイプミス。 –

答えて

3

使用one()イベントに$("#btn").click(function() {});がイベントのバインドを解除しないこと

$("#btn").one('click', function(){ 
    $("#label1").html((new Date()).getSeconds()); 
}); 

注意をバインドします。その要素にもう一度clickイベントをバインドします。次回はボタンをクリックすると、2つのイベントハンドラが呼び出されて、htmlと何もしない空の関数が更新されます。


イベントのバインドを解除するには、off()を用いることができるが、この場合にone()が好ましいです。

$("#btn").on('click', function() { 
    $("#label1").html((new Date()).getSeconds()); 

    $(this).off('click'); 
}); 
2

.one()をそのまま使用できます。

要素のイベントにハンドラをアタッチします。ハンドラは、各イベントタイプごとに最大で1回実行されます。アット存在

$(document).ready(function() { 
    $("#btn").one('click', function(){ 
     $("#label1").html((new Date()).getSeconds()); 
    }); 
}) 

あなたがクリックリスナーに、以下の方法で削除することができこんにちは$("#btn").click(function() {});

2

を使用して別のクリックハンドラをバインドしています。

$(document).ready(function() { 
    $("#btn").click(function(){ 
     $("#label1").html((new Date()).getSeconds()); 
     $('#btn').off('click'); 
    }); 
}) 
関連する問題