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 回答