2012-01-23 8 views
1

私はこのメソッドをクラス.delete_filterのすべての要素にバインドしました。 最初に、メソッドによって呼び出されるべきurlを含む 'data'属性を取得します。それから私は何か他のことをしていないスクリプトを呼び出して、リロードされているすべてのdivを典型的な "wait ... loading data" divに置き換えます。それはうまく動作しますが、私は一度だけ私が望むように他のリンクをクリックすることができます何も起こらず、これは私を狂って運転していると私はすでに本当に怒っている!クラス関連のonclickイベントは1回だけトリガされるのはなぜですか?

$(".delete_filter").click(function() { 
    url=$(this).attr('data'); 
    $.getScript("http://blabla.com/ajax/wait/filters:info", function() { 
      $.getScript(url); 
    }); 
});  

ここで失敗しますか?

+1

は '要素は負荷後に削除またはページに追加されている( 'DELETE_FILTER')' $ていますか? – Ktash

答えて

2

DOMを変更すると、変更している部門にclickイベントをアタッチした要素が含まれることがあります。

この場合、on \ live \ delegateの機能を使用する必要があります。
これらの関数は、現在レンダリングされている要素と後で動的に追加される要素で同じものを「動作」させます。

$(selector).live(events, data, handler);    // jQuery 1.3+ 
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+ 
$(document).on(events, selector, data, handler);  // jQuery 1.7+ 

onバージョン:

$("body").on("click", ".delete_filter", function(){ 
     url=$(this).attr('data'); 
     $.getScript("http://blabla.com/ajax/wait/filters:info", function() { 
       $.getScript(url); 
     }); 
    }); 
+0

'live'のアドバイスはしないでください。jQuery 1.7+からdepricatedされ、代わりに' on'を使います。 – ShankarSangoli

+0

@ ShankarSangoli。私は各バージョンで何を使うべきかを書いた。なぜあなたは不平を言っていますか? =) – gdoron

+0

あなたの答えが正しいという苦情ではありませんでしたが、大部分のバグ修正と最適化されたコードがあるので、常に最新のものを使用する方が良いです。 – ShankarSangoli

1

クラス要素にクリックバインドを適用すると、コードを実行したときにそのクラスを持つ要素にのみ適用されます。つまり、動的に.delete-filterクラスを追加する場合は、コードを再度実行する必要があります。

+0

はいクリック要素が呼び出されると要素が再読み込みされます。私はこれを別の方法で解決するか、ページ全体を再ロードせずにJavaScriptを再ロードする方法はありますか? – davidb

+0

また、彼は '.on()'を使うことができます:http://api.jquery.com/on/ – CAbbott

+0

@davidb、あなたのスクリプトの設定方法はわかりませんが、新しい要素をロードする場合はクリックをバインドするにはコードを再度実行する必要があります。 – mowwwalker

0

jQueryがリクエスト/レスポンスをキャッシュしている可能性があります。クリックするたびにURLを変更してみてください。これを試して。

$(".delete_filter").click(function() { 
    var url=$(this).attr('data'); 
    $.getScript("http://blabla.com/ajax/wait/filters:info?r=" + Math.random(), function() { 
      $.getScript(url); 
    }); 
}); 
関連する問題