设置jQuery .offset(); 而"display:none;" 导致其他左侧和顶部值比"display:block;"

hae*_*mse 5 javascript jquery

下面的ajax加载div是"display:none",当显示样式不是没有时,它的位置将被正确设置!为什么?有解决方法吗?我很感谢任何建议......

function setTwPopup(x,y){
    $.ajax({
        url: "twPopup.html",
        async : false,
        success: function(result){
            $('body').append(result);
        }
    });
    var popUp = $('.twPopup');
    var x = x-71;
    var y = y-342;
    popUp.offset({'top': y, 'left': x});
    //popUp.draggable({ handle: popUp });
    //popUp.fadeIn(400);
}
Run Code Online (Sandbox Code Playgroud)

编辑:与设置不透明度为0,而不是显示一个解决办法:没有不好的,因为我需要的.fadeIn()之后...和淡入将它淡化到bevore setet

Kri*_*erg 6

如果元素设置为"display:none",则无法设置位置,宽度或高度,元素必须可见才能进行计算.虽然,你可以设置:

visibility: hidden;
Run Code Online (Sandbox Code Playgroud)

要么

position: absolute;
left: -99999px;
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!


Sal*_*n A 4

这个怎么样:

function showThatDiv() {
    thatDiv.css({
        display: 'block',
        opacity: 0
    });
    // calculate x and y HERE
    thatDiv.css({
        left: x,
        top: y
    }).fadeIn("slow");
}
Run Code Online (Sandbox Code Playgroud)