2011-07-21 11 views
0

私は繰り返し処理してクリックハンドラを追加する一連のリンクを持っています。クリックされた各リンクは、応答データを含むdivを作成してDOMに追加するajax要求を起動します。しかし、新しく追加されたdiv(小さなライトボックスに似たフローティングdiv)は、ユーザーが閉じる(divで)をクリックするか、画面上の他の場所をクリックすると削除されます。私はこの変更を監視するために以下の簡単なスクリプトを持っていますが、クリックハンドラは一度だけ起動し、ページが更新されるまで動作しません。私は間違って何をしていますか?クリックハンドラは一度だけ起動します

var monitorChange = function() { 
    //Check if div has been appended to the dom and if so continue to monitor it 
    if ($('div.justappended').length > 0) 
    { 
     setTimeout(monitorChange,100); 
    } 
    else 
    { 
     //div has been removed from the dom 
     alert('div removed'); 
     //...do additional stuff here 
    } 
}; 

$('span.someElements').each(function() { 
    var that = $(this); 
    $(that).click(monitorChange); 
}); 
+1

最後の各ループで 'that'はすでにjQueryオブジェクトなので、' $(that) 'は必要ありません。 – Jess

答えて

2

私が理解しているように、clickイベントはまだajaxで生成されたコードで動作します。この場合、liveコマンドを使用する必要があります。 http://api.jquery.com/live/

$( 'span.someElements')。live( 'click'、monitorChange);

+0

ありがとうございます、これは意図した通りに機能しました。 – stavarotti

関連する問題