0

我有一个在调用函数之前隐藏溢出的元素。我试图确定在我设置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()不要测试该元素是否可见。

有没有办法做到这一点?我考虑过将它从隐藏到物理上的可见与top规范left,但我认为如果可能的话,这种方式会更干净。

希望有人知道答案。

4

1 回答 1

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/

于 2013-02-13T08:16:11.470 回答