2015-05-04 3 views
3

У меня есть массив объектов ClientRect, которые я получил, делаяНайти ближайший BoundingClientRect

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

Что я имею ограничивающую клиенту Прямоугольник другого элемента.

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

Мой вопрос, как я могу найти в trackedBounds, ближайший к северу от currentElement?

ответ

0

Я думаю, что вы можете фильтровать прямоугольники, которые не к северу от currentElement:

trackedBounds = trackedBounds.filter(rect => rect.bottom > currentElement.top) 

и сортировать оставшиеся прямоугольники на их .bottom собственности:

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] 
Смежные вопросы