我在更新ajax请求后未准备好的元素时遇到问题.
如果我在页面加载上运行myFunction()函数,如下所示:
$(function() { myFunction(); }
我没有任何问题.但是,如果我然后使用类似的东西
$.ajax({ url: this.href,dataType: "script",complete: function(xhr,status) { myFunction(); } });
返回$(“.myElement”).replaceWith(“htmlHere”).当完整事件触发时,元素根本就没有准备好.如果我在那里设置延迟,它再次正常工作.
当DOM准备就绪时,除了’完成’之外还有其他事件会被解雇吗?
更新:
这是实际的代码:
$(function() { $("a.remote").live("click",function(e) { $.ajax({ url: this.href,success: function(xhr,status) { myFunction(); } }); e.preventDefault(); return false; }); myFunction(); }); function myFunction() { // Modify the dom in here }
失踪的);对我来说只是一个错字.
香港专业教育学院现在尝试使用成功而不是完成,它似乎没有任何区别.
解决方法
你可以使用$(document).ready(function(){…});在DOM加载时包装你想要触发的任何内容.你的ajax请求可以放在document.ready中,如果你想让它等到dom加载完毕.
如果你想等到ajax加载了它的资源,你应该使用ajax.success而不是完成.