知道何时使用.load()完全加载新的HTML元素

时间:2012-01-03 16:34:13

标签: jquery load

我在使用.load() jquery函数时遇到了一些问题,我想在隐藏块中加载一些HTML,而不是在加载所有新元素时我想在dom树中移动它。 那是我的剧本

var preloader = $(document.createElement("div")).attr('id', 'msgloader').css({ visibility: "visible"}); // visible is just for test it 
preloader.html( newHtml ); // newHtml is a string with html elements like images table etc.
$("body").append(preloader);
preloader.load(function() { alert("div is ready"); });

我不知道为什么但是当msgloader中的新HTML准备好并且完全加载时,永远不会触发alert()消息你知道我在哪里制造miskate吗?

3 个答案:

答案 0 :(得分:2)

为什么你不准备在文件准备就绪?由于您正在直接修改dom,因此您的更改应立即可用,因此load()永远不会触发,因为它已在您添加代码后进行设置。

答案 1 :(得分:0)

.load()用于从服务器加载数据。当您只是.append()一些HTML时,它就会立即就绪。您的load()功能未显示提醒,因为它不是load任何内容。

答案 2 :(得分:0)

请参阅load method的注意事项:

  

与图像一起使用时加载事件的注意事项

     

开发人员尝试使用.load()解决的常见问题   快捷方式是在图像(或集合)时执行函数   图像)已完全加载。有几个已知的警告   这应该注意。这些是:

     
      
  • 它不能始终如一地工作,也不能可靠地跨浏览器
  •   
  • 如果图像src设置为与之前相同的src,则无法在WebKit中正确触发
  •   
  • 它没有正确地冒泡DOM树
  •   
  • 可以停止触发已存在于浏览器缓存中的图像
  •   

确定元素的所有内容何时完成加载并不是一种特别可靠的方法。您可以考虑使用overloaded load method从URL加载html,并在加载完成后添加到DOM(或者,只需添加到DOM上的DOM)。