当有人点击图片时,我们使用jQuery thickbox动态显示iframe.在这个iframe中,我们使用galleria一个javascript库来显示多张图片.
问题似乎是$(document).ready在iframe似乎过早被解雇并且iframe内容甚至尚未加载,因此galleria代码未在DOM元素上正确应用. $(document).ready似乎使用iframe父就绪状态来决定iframe是否准备就绪.
如果我们在单独的函数中提取由文档就绪调用的函数,并在超过100毫秒后调用它.它有效,但我们不能利用慢速计算机生产机会.
$(document).ready(function() { setTimeout(ApplyGalleria, 100); });
Run Code Online (Sandbox Code Playgroud)
我的问题:我们应该绑定哪个jQuery事件,以便在动态iframe准备就绪时能够执行我们的代码,而不仅仅是它的父级?
我有div与垂直滚动条.Div正在通过ajax动态更新,并使用jQuery的.html方法插入html.div更新后滚动条返回顶部,我试图将它保持在上一个位置.
这是我正在尝试的方式:
var scrollPos = $('div#some_id').scrollTop(); //remember scroll pos
$.ajax({...
success: function(data) {
$('div#some_id').html(data.html_content); //insert html content
$('div#some_id').scrollTop(scrollPos); //restore scroll pos
}
});
Run Code Online (Sandbox Code Playgroud)
这失败了.我最好的猜测是,由于插入的html没有呈现(即没有滚动),它失败了.
例如,这是有效的.
setTimeout(function(){
$('div#some_id').scrollTop(scrollPos);
}, 200);
Run Code Online (Sandbox Code Playgroud)
但在我看来,这是肮脏的黑客.我无法知道某些浏览器不会花费超过200毫秒来渲染插入的内容.
有没有办法等待浏览器在继续之前完成渲染插入的html?