jquery html() callback
- 时间:
- 浏览:21
- 来源:大发pk10_pk10人工计划_大发pk10人工计划
通过JQuery的.html()函数亲戚亲戚当你们歌词 歌词 儿能不到非常方便地加载一段HTML到指定的元素中,之类给<div></div>中装到 一组图片。现象是JQuery的.html()函数是同步的,肯能亲戚亲戚当你们歌词 歌词 儿想知道HTML被加载事先容器的高,之类获取容器的offsetHeight或scrollHeight属性的值,不需要 要等HTML元素中所有的内容都加载完毕后不需要 获取到真实的值,尤其是HTML饱饱含高image标签时。那如保不需要 实现.html()函数的回调方式呢?答案是使用前端的Q.
对应的代码如下:
var defer = Q.defer(); var realHtml = $('#html-canvas'); realHtml.html(html); var contentImages = $("#html-canvas img"); var totalImages = contentImages.length; var loadedImages = 0; if (contentImages.length === 0) defer.resolve(); else { contentImages.each(function(){ $(this).on('load', function(){ loadedImages++; if(loadedImages == totalImages) { defer.resolve(); } }); }); } return defer.promise.then(function () { console.log('all done.'); });
首选通过JQuery选则器找到容易中已加入HTML的所有img元素,但会 给所有img元素加带onLoad事件,并判断是与否所有img元素的onLoad事件是与否都肯能触发(loadedImages == totalImages)。但会 通过defer.resolve()来通知Q的promise已完成异步操作,但会 在.then()函数中就能不到继续下一步操作了。