Javascript 是否有类似于“$(window.load();”的内容用于在新插入的Ajax内容完成加载后执行函数?

Javascript 是否有类似于“$(window.load();”的内容用于在新插入的Ajax内容完成加载后执行函数?,javascript,html,jquery,Javascript,Html,Jquery,在我通过执行一些简单的操作(如$(element).load(url,callback)发出ajax请求之后页面上将有新内容,包括图像等 在新内容加载完成后,是否有类似于$(窗口).load(回调)的方法 $(window.load()在页面刷新时可以很好地工作,这样您就可以在加载所有内容之前显示加载动画,但是在$(window.load()已触发之后加载内容时,似乎缺少类似这样的简单功能 编辑6/6/12 11:55下午:我想每个人都误解了我的问题。让我再解释一下: 首次加载页面时,可以使用j

在我通过执行一些简单的操作(如
$(element).load(url,callback)发出ajax请求之后页面上将有新内容,包括图像等

在新内容加载完成后,是否有类似于
$(窗口).load(回调)
的方法

$(window.load()在页面刷新时可以很好地工作,这样您就可以在加载所有内容之前显示加载动画,但是在
$(window.load()
已触发之后加载内容时,似乎缺少类似这样的简单功能

编辑6/6/12 11:55下午:我想每个人都误解了我的问题。让我再解释一下:

首次加载页面时,可以使用jQuery利用这两个事件:
$(document.ready()
$(窗口).load()。第一个在DOM就绪时触发,第二个在加载内容(图像等)时触发。在使用jQuery的
.load()
方法更新页面之后,我完全知道我可以传递一个回调,在Ajax完成后执行

那不是我想要的。我想在新内容加载完成后执行一个函数,类似于when
$(window.load()在页面的初始内容完成加载后激发


这有意义吗?如何创建类似于
$(window.load())的事件用于在加载Ajax内容之后(不仅仅是在插入HTML之后)进行操作。

我想您没有这样做。您只需触发成功ajax事件,该事件将在ajax完成后执行。这对你来说足够了。对于ajax返回的特定元素,不需要像.load()这样的事件。但您可以尝试将load()事件附加到元素,比如在服务器返回html之后但在将其插入DOM之前

$(element).load(url, function(){
  //this code is executed after the page is loaded
})

这就是您的意思吗?

听起来您正在寻找一种全局方法来处理所有ajax完整事件。 你可以这样做

$(document).ready(function () {
    $(document).ajaxComplete(function () { alert('ajax completed.') });
    $('#d').load("url-to-page", function (response, status, xhr) {
        if (status == "error") {
            var msg = "Sorry but there was an error: ";
            alert(msg + xhr.status + " " + xhr.statusText);
        }
    });
});
根据jQuery:

加载事件在元素和所有子元素完全加载后发送给元素。此事件可以发送到与URL关联的任何元素:图像、脚本、帧、iFrame和窗口对象

因此,在DOM更新之后(例如使用Ajax的内容),我将为所有新插入的图像上的“加载”事件设置一个侦听器:

function when_images_loaded($img_container, callback) { // do callback when images in $img_container (jQuery object) are loaded. Only works when ALL images in $img_container are newly inserted images and this function is called immediately after images are inserted into the target.
    var _imgs = $img_container.find('img'),
        img_length = _imgs.length,
        img_load_cntr = 0;

    if (img_length) { //if the $img_container contains new images.
        _imgs.on('load', function() { //then we avoid the callback until images are loaded
            img_load_cntr++;
            if (img_load_cntr == img_length) {
                callback();
            }
        });
    }
    else { //otherwise just do the main callback action if there's no images in $img_container.
        callback();
    }
}

这对于允许内容在图像准备好之前保持隐藏是很好的。如果您有背景图像将显示为背景图像,这将不起作用。一种解决方法是将CSS样式中使用的所有图像加载到一个保持隐藏的容器中,以便上述函数允许您加载图像。加载所有图像后,您可以删除仅包含CSS图像的元素,这样当您取消隐藏内容时,浏览器将立即呈现背景(等)。

几天前我偶然发现了这个问题,并使用了您当时对问题的回答,但是我后来偶然发现了这个插件,它可能对将来的其他任何人都有帮助。

你只是想在ajax调用期间显示“loading…”吗?我最近也尝试过同样的方法,但不起作用,而是选择div并将新的html内容放入其中alternative@RayCheng请看我最新的问题。答案如何(ajax回调或全局ajaxComplete)到目前为止还不能满足您的要求?您无法更新您的问题,并期望人们重新回答。请查看我更新的问题。您能提供一个附加这些加载事件的示例吗?这根本不是我的意思。谢谢。我更新了我的问题,以便更好地解释我的意思。这是一个有趣的提示。谢谢。不过,这不是我的意思这不是我想要的。我已经更新了我的问题,以便更好地解释我的意思。