2013-01-06 39 views
2

我正在寻找一种方法使jQuery UI对话框高度根据内容动态变化。jQuery对话动态高度

这里是我的代码:

$("#dialog-modal_"+productID).html("<iframe src='index.php?act=showProduct&amp;id="+productID+"' width='100%' height='100%' frameborder='0' scrolling='no'></iframe>"); 

$("#dialog-modal_"+productID).dialog(
{ 
    width: 810, 
    height: 590, 
    resizable: false, 
    modal: true, 
    open: function(event, ui) 
    { 
    } 
}); 


反正有没有这样做呢?

回答

1

因为你给的例子来自相对路径。您应该能够获取iframe的文档.height()

但是,您需要做一些CSS技巧来首先呈现iframe并获取其inbrowser文档高度,然后将该值应用于您的容器,然后将容器一旦新的高度被设定。

像...

从这里取:

var doc=document.getElementById("frame").contentDocument; 

// Earlier versions of IE or IE8+ where !DOCTYPE is not specified 
var doc=document.getElementById("frame").contentWindow.document; 

那么你会

var iframeDocHeight = $(doc).height(); // assuming it is displayed 
$("#dialog-modal_"+productID).css("height", iframeDocHeight); 

当然,这依赖于你已经得到的基础上的方式(给定其余的页面框架)允许iframe渲染而不立即显示它。

我会建议position:absolutevisibility:hidden的组合,然后一些js巫师来完成这一点。如果没有一个完整的HTML文档,建议一个超出我已经发布的绝对路径是没有用的。

本质封装的iframe中的元素与overflow:hidden;display:block;height0px;,而是让iframe中呈现完全(它会被隐藏),然后对其进行检查并进行测量必要

祝你好运!

+0

嘿:首先谢谢你!其次:它很难做到你所说的。也许你可以帮我找到另一种进入$(“#dialog-modal _”+ productID).html iframe的内容的方法吗? – user1936192

+0

我不确定你在问什么 - 你想要的高度或iframe的内容?如果以前,我的原始答案是你应该采取的方法。如果以后,那么是什么阻止你使用'var iframeHTML = $(“yourIFrameObj”)。html()'? –