Я обновляю свой код с jquery-waypoints 2.x до 4.x и обнаружил странное поведение, связанное с this.previous()
. Я обнаружил, что в обработчике, который был запущен в правильное время, this.element
является правильным. Однако this.previous().element
указывает на следующий элемент в DOM с путевой точкой, а this.previous().previous().element
указывает на тот же элемент, что и this.element
. Я могу установить точку останова в коде и проверить, что this.previous().previous().element == this.element
.
Я должен представить, что делаю что-то очень не так, или это ошибка. У меня v4.0.1, и я использую версию jQuery. Я привязываю свои путевые точки так:
$selector.waypoints(
function goingUp(direction) {
console.info(this.previous().previous().element == this.element); // true
console.info(this.next().previous().element == this.element); // true
}, {
offset: offsetCalculator(this),
});
Проблема оказалась в группировке путевых точек. Путевая точка .previous()
, не считая группировки, появилась позже в порядке документа, чем текущая путевая точка. Как только я добавил группы к путевым точкам, .previous()
и .next()
работали, как ожидалось.