3

つまり、コンテンツがjquery load()でロードされているページがあります。問題は、私が選択しようとしているときです。

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

(ドキュメント内で準備完了)は最初のページで機能しますが、後続のページ($(this).load(url);を使用してdivにロードされる)では、セレクターは機能を停止します。

任意のヒント?

4

2 に答える 2

6

click()現在ページに存在する要素でのみ機能します。チェックアウトしlivedelegate。とlive

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

patrick dwが言及しているように、delegate可能であれば、が推奨されます。

于 2011-01-10T02:18:38.610 に答える
3

動作を停止するわけではありません。それは、click実行時に(ページのロード時に)存在する要素にのみハンドラーをバインドするということです。

動的ハンドラーがロードされる.delegate()ハンドラーを配置できます。<div>

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

ハンドラーは#mydiv要素に配置され、clickイベントがそれにバブルアップすると、に一致する要素でイベントが発生したかどうかをテストしますa.selected_class

この.live()方法は同じことを行いますが、ドキュメント全体に対して行うため、通常は使用することをお勧めしません。

于 2011-01-10T02:19:45.557 に答える