2011-08-25 190 views
0

有沒有辦法找出一個元素是否被另一個不是第一個元素的子元素所遮擋?因爲當您點擊頁面上的任意位置時,我喜歡隱藏一個菜單,但噹噹前有一個隱藏菜單的Lightbox打開時,不會顯示該菜單。找出一個元素是否被JavaScript遮擋了

+0

http://stackoverflow.com/questions/1403615/use-jquery-to-hide-div-when-click-outside-it –

回答

0

你必須自己評估它。

考慮最前面元素的座標和大小,然後檢查「碰撞」與它後面的元素,你需要控制。

這基本上是檢查重疊的方塊。

0
function isObscured(element) { 
    // get element at element's position 
    var elem = document.elementFromPoint(element.offsetLeft, element.offsetTop); 

    // return whether obscured element has same parent node (will also return false if 
    // element === elem) 
    return elem.parentNode !== element.parentNode; 
} 

http://jsfiddle.net/pimvdb/tKtEV/

+0

我知道的功能,但使用的是我'需要檢查2D範圍內的每個像素'(element.offsetLeft ... element.offsetLeft + element.offsetWidth,element.offsetTop ... element.offsetTop + element.offsetHeight)'。 – panzi

+1

實際的屏幕位置(elementFromPoint對其參數要求)必須通過將offsetParent層次向上爬到文檔來計算。有關代碼和解釋,請參閱http://www.quirksmode.org/js/findpos.html – dlaliberte

相關問題