如何在jQuery中获取overflow元素的可见高度

时间:2013-02-13 00:01:14

标签: javascript jquery css height width

在调用函数之前,我有一个隐藏溢出元素的元素。我试图确定鼠标是否在我设置overflow: visible;之后将鼠标悬停在此溢出材料上,而是告诉我,即使鼠标仍然不可见,我的鼠标也会悬停在溢出内容上

有没有办法检查jQuery中的可见高度?这就是我的尝试:

    off = $(curSub).offset();
    xSubStart = parseInt(off.left);
    ySubStart = parseInt(off.top);
    xSubEnd = xSubStart + parseInt($(curSub).width());
    ySubEnd = ySubStart + parseInt($(curSub).height());

    if ( (x >= xStart && x <= xEnd && y >= yStart && y <= yEnd) ||
         (x >= xSubStart && x <= xSubEnd && y >= ySubStart && y <= ySubEnd) ) {
        // display menu
        $(cur).css('overflow', 'visible');
        match = true;
    }

xStart, xEnd, yStartyEnd变量定义在该代码之上并且工作得很好。我认为问题是jQuery函数width(), height(), outerWidth()outerHeight()不测试该元素是否可见。

反正有没有实现这个目标?我想过用topleft规范将它从隐藏移动到可见物理,但我认为如果可能的话,这种方式会更清晰。

希望有人知道答案。

1 个答案:

答案 0 :(得分:0)

问题是JavaScript在执行代码的下一行之前没有完成操作。

您可以使用回调函数:

var setHoverAfterOverFlowVisible = function(cur, callback) {
    $(cur).css('overflow', 'visible');
    match = true;
    //other stuff

    callback();
}

setHoverAfterOverFlowVisible(cur, /*hoverFunction*/);

有关回调的更多信息:http://www.impressivewebs.com/callback-functions-javascript/