2

クリックされたリンクに基づいてコンテンツを div にロードするマスター ページがあります。これを行うには、jQuery を使用して特定のアンカーのクリック ハンドラーを追加します。

<div id="nav">
  <a href="somepage.html">
  ...
</div>

<div id="content"/>

<script type="text/javascript">
  $(document).ready(function() {
    $('#nav a, #footer a').click(function(e) {
      $('#content').load($(this).attr('href'));
      return false;
    });
  });
</script>

#content に読み込まれるページの一部には、クリック ハンドラを追加したいアンカーもあります (そのため、これらのクリックの結果も #content に入ります)。私はこれを試しました:

$('#content a').click(function(e) {
  ...
});

しかし、それはうまくいかないようです。読み込まれたページのアンカーにクリック ハンドラーを設定する方法はありますか?

4

2 に答える 2

4
$(document).on('click', '#content a', function(e) {
  ...
});

動作するはずです。要素を動的に追加する場合はon()、それらをイベントにバインドするために使用する必要があります。ドキュメントから:

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが .on() を呼び出す時点でページに存在している必要があります。要素が存在し、選択できることを確認するには、ページの HTML マークアップにある要素のドキュメント対応ハンドラー内でイベント バインディングを実行します。新しい HTML がページに挿入されている場合は、要素を選択し、新しい HTML がページに配置された後にイベント ハンドラーを添付します。

理想的には、親要素を DOM 内でより近くに配置する必要がありますdocument

于 2012-10-26T19:07:48.340 に答える
1

試す:

$('#content').on("click", "a", function(e) {
    ...
});
于 2012-10-26T19:08:31.273 に答える