我正在使用
将包含图像的ajax加载到我页面上的div中$('#container').html(data)
假设变量数据是ajax返回的数据, 我如何知道新数据(和图像)何时在容器中完成加载?
答案 0 :(得分:2)
您要找的是.promise().done()
。这些在您希望等待在集合或jQuery对象上运行的任何和所有动画完成的情况下也很有用,而不会在单个回调中传递您的代码。
如果您要查看的是在加载的内容上调用代码或处理程序,那么您应该查看.load()
事件和委派的事件处理程序。你可能不需要两者,但无论如何你应该阅读,了解和理解它们。您可以在.on()
方法的文档中阅读有关委派事件处理程序的信息。
委派事件处理程序的快速摘要
委托事件处理程序是您附加到要监听的内容的祖先元素(可能已加载或未加载)的处理程序。
以下是委托click
处理程序绑定到body
元素并设置为在类click
的后代元素上侦听foo
事件的示例。这意味着此处理程序将侦听具有类foo
的任何元素(即使是稍后添加但尚未加载到DOM中的元素),它们是body
元素的后代。
$("body").on("click", ".foo", function() {
bar();
});
下面的内容完全相同,只是它只将处理程序绑定到绑定处理程序时存在的那些.foo
元素。处理程序不会监听稍后添加的任何.foo
元素。
$(".foo").on("click", function () {
bar();
});
通过将一个selector参数传递给.on()
方法,你可以告诉jQuery而不是监听绑定元素上发生的指定事件,它应该监听传播(或冒泡)事件,源自与给定选择器匹配的后代以到达绑定元素,并且应该使用触发事件的后代作为处理程序的上下文对象(this
)来调用处理程序。
jQuery API的相关链接