在调用函数之前,我有一个隐藏溢出元素的元素。我试图确定鼠标是否在我设置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, yStart
和yEnd
变量定义在该代码之上并且工作得很好。我认为问题是jQuery函数width(), height(), outerWidth()
和outerHeight()
不测试该元素是否可见。
反正有没有实现这个目标?我想过用top
和left
规范将它从隐藏移动到可见物理,但我认为如果可能的话,这种方式会更清晰。
希望有人知道答案。
答案 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/