Search
Calendar
 123456
78910111213
14151617181920
21222324252627
28293031   
<< May 2017 >>
Sponsored links
COUNTER 2005/08/19
Total

Unique
あなたのブログのお値段は?
GoogleAdSense
なかのひと
New Entries
Recent Comment
Recent Trackback
Category
Archives
Profile
Links
mobile
qrcode
RSSATOM 無料ブログ作成サービス JUGEM
スポンサーサイト

一定期間更新がないため広告を表示しています

posted by: スポンサードリンク | - | | - | - |
コールバック関数が複数回呼ばれてしまう問題

 特定の処理を行う度に、処理が何回も行われる出来事に遭遇したので調査。
ボタンを押すと1回処理が走る
もう1回ボタンを押すと2回処理が走る
もう1回ボタンを押すと3回処理が走る
 :
 :
増えとるがなΣ( ̄□ ̄;)

$('#btn').click(function test() {
    alert('a');
});

$('#btn').click(function test() {
    alert('b');
});

$('#btn').click();

    →実行結果
    → a を表示
    → b を表示


イベントに設定したコールバック関数って追加されていくのね。
勝手に上書きだと思ってた。


 

$('#btn').bind('click', function test() {
    alert('a');
});

$('#btn').unbind('click');

$('#btn').bind('click', function test() {
    alert('b');
});

$('#btn').click();

    →実行結果
    → b を表示


bind() を使用してコールバック関数を設定すれば unbind() で削除できる。


使いたいイベントに対応してるなら bind() と unbind() より live() と die() が素敵かも。
jQuery 1.3 では live() は以下のイベントに非対応。
blur, focus, mouseenter, mouseleave, change, submit

posted by: Diz | web開発 | 00:01 | comments(0) | - |
スポンサーサイト
posted by: スポンサードリンク | - | 00:01 | - | - |