2012-10-26 48 views
2

我有一个基于单击哪个链接将内容加载到div的母版页。我这样做是通过使用jQuery添加一个单击处理某些主播:更改加载页面内的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 a').click(function(e) { 
    ... 
}); 

但这似乎并不奏效。任何想法,我可以如何设置点击处理程序锚定在这些加载页面?

回答

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

应该工作。当您动态添加元素时,您需要使用on()将它们绑定到事件。从文档:

事件处理程序只绑定到当前选定的元素;它们必须在您的代码拨打 .on()时在页面上存在。为确保元素存在且可以选择,请在文档就绪处理函数中为页面上的HTML标记中的 元素执行 事件绑定。如果将新HTML注入 页面,请在将新HTML 放入页面后选择元素并附加事件处理程序。

理想情况下,您希望父代元素比document更接近DOM。

+0

感谢您的解释,j08691。我使用Matt Burland建议的'#content'元素添加.on()事件处理程序。 –

1

尝试:

$('#content').on("click", "a", function(e) { 
    ... 
}); 
+0

感谢#content建议,马特。 –