我正在使用Jquery加载,然后一旦内容加载到div中,我想将一些标记更改为语言相关变量。
我的问题是我必须使用settimeout让脚本等待足够长的时间才能让元素准备好进行编辑。
当我使用回调函数参数时,我想要编辑的元素显然没有准备好,因为它们没有被设置。我讨厌使用settimeout,因为这会限制每个人到最慢的设置,并且总是某些连接会比这更慢。
显然回调方法只是意味着ajax方法得到了html,但它并不能确保导入的元素在dom中实际就绪了。
有人有想法吗?
当前代码
$("#content-basket").load("/BasketPage.htm?time=" + now.getMilliseconds());
...
...
setTimeout("timedbasket();", 500);
...
...
function timedbasket() {
alert($('#basketlegend'));
$('#basketlegend').html(basketlabel);
}
我希望能够使用
$("#content-basket").load("/BasketPage.htm?time=" + now.getMilliseconds(), "", timedbasket());
这是basket.htm来源
<tr>
<td>
<div id="basket">
<fieldset>
<legend><span id="basketlegend"></span></legend>
<table id="baskettbl" border="0" class="basket-table">
<tbody>
<tr class='total'>
<td>
<span id="empty"></span>
</td>
</tr>
</tbody>
</table>
</fieldset>
</div>
</td>
</tr>
答案 0 :(得分:2)
使用callback参数进行加载并将代码放入回调中。
$("#content-basket").load("/BasketPage.htm?time=" + now.getMilliseconds(),null,
function() {
...do stuff here after #content-basket is finished loading...
});
在查看jQuery之后,确实看起来响应是在调用任何回调之前注入的,因此应该更新DOM。您是否有可能重新使用可能引用之前存在的DOM元素的jQuery对象,但是被负载替换了?
答案 1 :(得分:0)
jQuery.live就是答案。以这种方式将您的事件绑定到DOM元素,甚至新的元素都会受到影响。