2011-01-10 5 views
3

つまり、コンテンツがjquery load()でロードされているページがあります。問題は私が選択しようとしているときです。 (文書準備内側)jqueryのセレクタがload()の後で動作を停止する

$('a.selected_class').click(function(e){ 
alert('alert'); 
e.preventDefault(); 
}); 

最初のページに動作しますが、それ以降のページで($(これを使用してロードされている)(URL)を.LOAD; div要素の中に)、セレクタは動作を停止します。

ヒント?

答えて

3

動作が停止しているわけではありません。実行時に存在する要素(ページの読み込み時)にのみ、clickハンドラーをバインドするだけです。

動的なものがロードされている<div>に、.delegate()ハンドラを配置することができます。

$('#mydiv').delegate('a.selected_class','click',function(e){ 
    alert('alert'); 
    e.preventDefault(); 
}); 

ハンドラは、#mydiv要素の上に置かれ、そしてclickイベントは、それまでの泡とき、それはイベントがa.selected_classに一致する要素に行われたかどうかを確認するためにテストします。

.live()メソッドは同じことを行いますが、ドキュメント全体ではドキュメントのために実行されるため、通常は使用することはお勧めできません。

+1

完璧に働いた、ありがとう – psolms

6

click()は、現在ページに存在する要素でのみ動作します。 livedelegateをチェックしてください。 liveで:パトリックDWが言及したよう

$('a.selected_class').live("click", function(e){ 
alert('alert'); 
e.preventDefault(); 
}); 

delegateは可能であれば好ましいです。

+0

+1代理人に対する最新の推奨事項については、こちらをご覧ください。 – user113716

関連する問題