我尝试完成的是刷新DIV中的数据而不重新加载整个页面,但它没有按预期工作。
我有这个Jquery代码:
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(document).ready(function() {
$('#Col1').on('click', function() {
var url = 'PurchaseRequestList.asp?order2=PRID';
$('#div1-wrapper').load(url + ' #div1');
});
});
</script>
以下是HTML代码
<div id="div1-wrapper">
<div id="div1" style="border:solid 1px red; width: 100%;">
<table width="90%" align="center" class="RowDetail">
<tr>
<td><a id="Col1">Column1</a></td>
<td>Column2</td>
<td>Column3</td>
<td>Column4</td>
</tr>
</div>
</div>
如果我将链接(下方)移到DIV之外,它将起作用。但是,如果下面的链接位于正在使用数据刷新的DIV内部,则它仅适用于第一次单击,并在此之后停止工作。
<a id="Col1">Column1</a>
如果可能,请帮助您提供示例代码。
答案 0 :(得分:3)
只需改变:
$('#Col1').on('click', function() {
到
$(document).on('click', '#Col1', function(e) {
这是直接与委派事件的旧论点。通过使用委派事件,您可以确保动态添加的元素维护该事件链。在较新的版本中,例如您的示例中所示(使用.on),您可以将.on
委派给要定位的元素的父或文档本身。许多人认为定位document
是不好的做法,因为他们声称有overhead
个问题。就个人而言,自从.on被引入以来,我一直在使用这种方法,已经在至少3个程序中使用它,每天看到成千上万的访问者,并且没有一个投诉。我说,除非你制作一个只有JS的视频游戏,坚持使用$(document)
因为它更容易跟上,并允许你根据需要不断“chain”委托事件而不记得{{} 1}}
$(document)