想让jquery先获取iframe的宽和高,然后dialog再居中,我的代码问题在哪?

bianweiall 发布于 2013/12/05 11:15
阅读 897
收藏 2

通过一下代码,现在得到的结果是dialog先居中,然后再通过iframe的宽高改变了dialog大小,这样我的dialog就没法居中了,要怎么办才能居中呢?怎样让load()方法执行完后程序再执行下一步?


var iframeBoxHeight = $("#" + idName).height();
var iframeBoxWidth = $("#" + idName).width();
contentBox = "<div id=\"" + idName + "-contentBox\" class=\"green-ui-dialog-contentBox\"></div>";
var contentBoxObj = $(contentBox);
$("<iframe id=\"" + idName + "-iframeBox\" src=\"" + urlStr + "\"></iframe>").appendTo(contentBoxObj);
$this.append($(contentBoxObj));
$("#" + idName + "-iframeBox").load(function() {
	iframeBoxHeight = $(this).contents().find("p").height() + 30;
	iframeBoxWidth = $(this).contents().find("p").width() + 30;
	$("#" + idName + "-iframeBox").css({
		"height": iframeBoxHeight + "px",
		"width": iframeBoxWidth + "px"
	});
});

$this.css({
	"display": "none",
	"left": ($(window).width() / 2 - iframeBoxWidth / 2) + "px",
	"top": ($(window).height() / 2 - iframeBoxHeight / 2) + "px",
	"z-index": "10000"
});



加载中
0
JustForFly
JustForFly
你可以把 $this.css()这一段放到load的方法内部试试。
0
倪闯
倪闯
jquery的load方法为异步,所以会和下面的代码同时执行,建议写在load(function())内部
0
水牛叔叔
水牛叔叔

想实现动态居中,这样用px做单位,还用绝对数值不能很方便实现。

尝试下用百分比做 left、top、margin的值

0
bianweiall
bianweiall
感谢楼上3位的解答,写在load内解决问题!
返回顶部
顶部