当它出现时获取jQuery弹出窗口的高度

时间:2014-11-11 21:29:01

标签: jquery popup height

我希望在加载时弹出窗口的高度,以便我可以设置左/顶值并确保它不在视口之外。 但是在第一次切换弹出窗口时,只有静态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后获得高度?

1 个答案:

答案 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});
});
...