javascript
  • jquery
  • ajax
  • 2012-01-20 30 views 2 likes 
    2

    我正在开发一个窗口小部件,用于在用户与窗口小部件进行交互时动态加载点对点的HTML & JS代码&文件。如何在ALL AJAX加载的元素和代码完全加载后执行代码?

    我遇到了一些代码/文件没有完全加载之前,下一段代码依赖于它执行的问题。这会导致jQuery对话框和HTML代码块中丢失的按钮永远不会显示,因为显示它们的JS在其准备好之前执行。

    我已经试过以下两个jQuery方法但既不工作始终坚持:

    $("#dynamic1, script[name$='/forms.js']").ready(function() {/* my code*/}); 
    $("#dynamic1, script[name$='/forms.js']").load(function() {/* my code*/}); 
    

    我需要确保所有项目的代码依赖于加载的“我的代码”块被执行并它只需要执行一次。

    任何想法我在做什么错在这里?

    +0

    已经用像RequireJS这样的加载程序试过了吗?也许你需要把它与Deferreds和'$ .when'结合起来。让我知道,如果我走在正确的道路上,我可以写一些东西来指导你朝这个方向发展。 – gonchuki

    +0

    你能展示AJAX调用的代码和它们的回调吗? –

    +0

    我还没有试过RequireJS,但我现在将它看作一个选项。我尝试将某些AJAX调用更改为async:false,但这仍然会创建实例(远不及时),而不会及时加载。例如,如果我创建一个对话框,如$(“selector”)。dialog({buttons:{Submit:submitResultFunc,Cancel:function(){$ e(this).dialog('close');}})'回调submitResultFunc并且该函数在forms.js中声明,那么我需要确保脚本已经完全加载并且所有函数都可用。如果他们不是,那么“提交”按钮就不会显示。 – eComEvo

    回答

    1
    $.when(
    
        // one or multiple ajax requests 
    
    ).then(function() { 
    
        // After the ajax request is done 
    
    }); 
    
    相关问题