Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在$.load()之后执行$(document).ready(),这是可能的还是有其他选择_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在$.load()之后执行$(document).ready(),这是可能的还是有其他选择

Javascript 在$.load()之后执行$(document).ready(),这是可能的还是有其他选择,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个带有表单和表格的页面(用于显示使用表单保存的数据的结果) 表单使用ajax提交数据,保存数据,然后重新加载表 问题是表(使用AJAX($.load)加载)是在执行$(document.ready()之后加载的。这意味着该表没有所需的功能 是否有任何方法可以推迟执行$(document).ready(),直到AJAX完成加载,还是使用完全不同的方法,如使用iframe 下面是我的问题的一个例子: $(document).ready(function(){ //some code

我有一个带有表单和表格的页面(用于显示使用表单保存的数据的结果)

表单使用ajax提交数据,保存数据,然后重新加载表

问题是表(使用AJAX(
$.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操作的新方法。@ManseUK
live()
尚未被弃用,但建议在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
     });
 });