Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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
Jquery 通过Ajax将动态内容加载到DIV中_Jquery_Ajax_Html_Dynamic - Fatal编程技术网

Jquery 通过Ajax将动态内容加载到DIV中

Jquery 通过Ajax将动态内容加载到DIV中,jquery,ajax,html,dynamic,Jquery,Ajax,Html,Dynamic,我有一个DIV在ajax数据加载调用成功后获取其内容: $.ajax({ type: 'POST', url: '/load.php', success: function(msg) { document.getElementById('DIV').innerHTML = msg; ... 在新加载的内容中,有一些对象。因此,我无法在页面最初加载时实例化这些对象,因为它们还不存在。因此,我在ajax success上对它们进行了实例

我有一个DIV在ajax数据加载调用成功后获取其内容:

  $.ajax({
    type: 'POST',
    url: '/load.php',
    success: function(msg) { 
            document.getElementById('DIV').innerHTML = msg;
    ...
在新加载的内容中,有一些对象。因此,我无法在页面最初加载时实例化这些对象,因为它们还不存在。因此,我在ajax success上对它们进行了实例化:

  $.ajax({
    type: 'POST',
    url: '/load.php',
    success: function(msg) { 
            document.getElementById('DIV').innerHTML = msg;
            $("#button").button();
            $("#dp").datepicker();
            etc.
    }
这个很好用。然而,我想知道这是否是一个好的做法。首先,每次用户触发函数加载DIV时,我假设所有内容都需要一次又一次地添加到浏览器的对象模型中。同样,所有这些jQuery实例化调用都需要反复运行

您能告诉我这是否是最佳实践,以及是否有更好的方法将内容加载到DIV中吗


谢谢。

这是我所知道的在动态添加的元素上实例化小部件的唯一方法,除非特定的小部件库提供了更好的功能。事件处理程序可以使用委托更早地绑定到
.on()
,但是小部件通常需要在实例化时访问元素(它们通常在初始化时修改DOM)。

这个概念很好,但是有更干净的方法。首先,您可以通过简单地将成功整合到单个函数中并将其从.ajax块中分离出来来清理现有代码

我认为您真正想要的是最近用jQuery1.8更新的。它将在任何ajax请求完成时触发,但您可以传递数据,用于区分哪个ajax请求触发.ajaxComplete中的哪个代码。引用文档中的话,“创建请求时使用的事件对象、XMLHttpRequest对象和设置对象”都可以传递到.ajaxComplete处理程序中

使用此方法的示例(也来自文档):

另一种选择是显式使用延迟对象。总是检查,完成,特别是失败

$(document).ajaxComplete(function(event, xhr, settings) {
    if ( settings.url === "ajax/test.html" ) {
        $( ".log" ).text( "Triggered ajaxComplete handler. The result is " +
            xhr.responseHTML );
    }
});