我希望在加载时弹出窗口的高度,以便我可以设置左/顶值并确保它不在视口之外。
但是在第一次切换弹出窗口时,只有静态div的高度可用,不包括来自ajax的内容。
$(".td_id").click(function(e) {
var leftVal = e.pageX+10;
var topVal = e.pageY;
var bodyTop = document.documentElement.scrollTop;
topVal -= bodyTop;
win = $(window).height();
winCenter = win / 2;
$.post("ajax.php",{do:'load_data'},function(table){
$(".popup tbody").html(table);
}
);
$(".popup").toggle();
popup = $(".popup").height();
if (topVal > winCenter) topVal -= popup;
if ((topVal+popup) > (win + 10)) topVal = win-10-popup;
if (topVal < 10) topVal = 10;
$(".popup").css({left:leftVal,top:topVal});
});
那么如何在收到内容并将其添加到弹出式div后获得高度?
答案 0 :(得分:1)
弹出窗口似乎是从ajax帖子获取内容,并且当您尝试计算post回调之外的高度时(在弹出窗口从ajax post获取其内容之前),因此高度计算不正确。尝试在Ajax Post成功回调函数中替换高度计算代码,如下:
...
$.post("ajax.php",{do:'load_data'},function(table){
$(".popup tbody").html(table);
$(".popup").toggle();
popup = $(".popup").height();
if (topVal > winCenter) topVal -= popup;
if ((topVal+popup) > (win + 10)) topVal = win-10-popup;
if (topVal < 10) topVal = 10;
$(".popup").css({left:leftVal,top:topVal});
});
...