Javascript 在$.load()之后执行$(document).ready(),这是可能的还是有其他选择
我有一个带有表单和表格的页面(用于显示使用表单保存的数据的结果) 表单使用ajax提交数据,保存数据,然后重新加载表 问题是表(使用AJAX(Javascript 在$.load()之后执行$(document).ready(),这是可能的还是有其他选择,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个带有表单和表格的页面(用于显示使用表单保存的数据的结果) 表单使用ajax提交数据,保存数据,然后重新加载表 问题是表(使用AJAX($.load)加载)是在执行$(document.ready()之后加载的。这意味着该表没有所需的功能 是否有任何方法可以推迟执行$(document).ready(),直到AJAX完成加载,还是使用完全不同的方法,如使用iframe 下面是我的问题的一个例子: $(document).ready(function(){ //some code
$.load
)加载)是在执行$(document.ready()
之后加载的。这意味着该表没有所需的功能
是否有任何方法可以推迟执行$(document).ready()
,直到AJAX完成加载,还是使用完全不同的方法,如使用iframe
下面是我的问题的一个例子:
$(document).ready(function(){
//some code here that needed for the html in table.html e.g. datepicker, chosen, jqueryui, etc
});
<form>
//Inputs with a button to submit using ajax, where the result is displayed using table.php
</form>
<div id="tableOfContent"></div>
<script>
$('#tableOfContent').load("table.php");
</script>
$(文档).ready(函数(){
//这里有一些table.html中html所需的代码,例如datepicker、Selected、jqueryui等
});
//使用ajax提交的按钮进行输入,结果使用table.php显示
$('#tableOfContent').load(“table.php”);
document.ready在页面的HTML完成加载后被调用,没有两种方法
但是,您可以使用live binding,它将处理程序附加到页面上尚未出现的元素
例如:
$(".datepicker").live("click", function() {
$(this).datepicker();
})
更新jQuery>1.7(这也更快)
你能行
$('#tableOfContent').load("table.php",function(){
//completed load actions here
});
但您应该注意,如果加载图像,它们将不会被加载。如果是这种情况,您可以先将table.php的内容隐藏起来,然后在$(“#tableOfContent img').load()中再次隐藏。这将适用于1个图像;多个图像有点复杂,但请随时询问这是否是您要查找的:)您可以使用jQuery.holdReady()延迟就绪事件: 请参阅$(document).ready()应用于应该在文档准备就绪时执行的脚本 如果需要在ajax调用后执行某些操作,可以在函数中编写所有内容,并使用ajax回调调用它
function what_i_need() {
// bla bla
}
<script>
$('#tableOfContent').load("table.php", {}, what_i_need);//code had syntax error; '{)'
</script>
从ready函数中加载表数据,并使用Load()函数的complete事件调用余数
$(document).ready(function() {
// click bindings etc ..
$('#tableOfContent').load("table.php",function() {
// things to do once the table is loaded
});
});
我不太明白在这里使用Ajax的意义。为什么不简单地用PHP来显示这个表呢?我不明白你的问题——这个表没有加载吗?您是否遇到了某种错误?这里有一个很小的语法错误:
load(“table.php”,{),
但是在这里您执行了您需要的代码(),这可能会导致一个问题images不会被加载?什么?这是来自jQuery站点上的ready docs->虽然JavaScript提供了加载事件以在呈现页面时执行代码,但在完全接收到所有资产(如图像)之前,不会触发此事件。谢谢Scott,我可以使用回调函数调用execute。但问题是我不想执行重写docuement.ready代码两次。我正在处理一个应用程序,其中我需要将所有JS集中在一个文件中,从而有一个文档。为网站中的所有页面做好准备。如果要操作DOM,而在函数运行时它还没有准备好,会发生什么?根据我的经验,holdReady主要用于防止在某个AJAX请求完成之前触发DOMready。DOM操作应该在$(document).ready()处理程序中完成。请注意,1.7 on中不推荐使用live()替换为,但是on()和bind()之间有什么区别没有区别,但是on()
是在1.7之后执行.live、.delegate和.bind操作的新方法。@ManseUKlive()
尚未被弃用,但建议在1.8+发布之前使用开
,因为live
将被删除。@lolwut直接从jquery->上的live()文档中选择“从jquery 1.7开始,.live()方法已弃用“这里的问题是,我需要执行的函数对于整个页面都是通用的,因此,如果成功使用回调,我将不得不运行代码(与document.ready中的相同)两次。这将导致以下问题:continued:单击div绑定功能将导致代码执行twice@malkawi调用依赖于回调中日期数据和$(document).ready()上剩余代码的代码功能…无需调用任何东西两次-在您的问题中添加更多代码,我将改进我的回答。我将在文档中详细说明我的问题。准备好启动整个应用程序常见的大多数功能,例如DIVs(.submit button)绑定到ajaxSubmit onclick。因此,如果定义一个函数并在document.ready中调用它,然后在$的回调中再次调用它。加载通过单击绑定的代码会执行两次,因此表单在click@malkawi我不是说你必须把所有的东西放两次……把需要的东西放在桌子上在表回调和ready()函数中的所有其他内容中。。。。
function what_i_need() {
// bla bla
}
<script>
$('#tableOfContent').load("table.php", {}, what_i_need);//code had syntax error; '{)'
</script>
$(document).ready(function(){
what_i_need();
});
$(document).ready(function() {
// click bindings etc ..
$('#tableOfContent').load("table.php",function() {
// things to do once the table is loaded
});
});