2015-05-04 96 views
3

我ClientRect对象的数组,我得到了做查找最接近BoundingClientRect

var trackedElements = $('[track]'); 
var trackedBounds = []; 
_.each(trackedBounds, function(elem) { 
    return $(elem)[0].getBoundingClientRect(); 
}); 

什么我也有另一种元素的边界客户矩形。

var currentElement = $('.active')[0].getBoundingClientRect();

我的问题是,我该如何找到内trackedBoundscurrentElement最接近北?

回答

0

我想你可以过滤不在北currentElement rects:

trackedBounds = trackedBounds.filter(rect => rect.bottom > currentElement.top) 
他们 .bottom财产

和排序剩余rects:

trackedBounds = trackedBounds.sort((rect1, rect2) => rect1.bottom - rect2.bottom) 

结果是trackedBounds数组的第一个元素:

let result = trackedBounds 
    .filter(rect => rect.bottom > currentElement.top) 
    .sort((rect1, rect2) => rect1.bottom - rect2.bottom) 
    [0]