jQuery Получить Предыдущий и Следующий элемент на Drag - PullRequest
3 голосов
/ 15 июля 2010

Я пытаюсь сделать график. Временная шкала имеет несколько элементов динамического ключевого кадра, размещенных с абсолютной позицией на случайных позициях. Есть ли способ получить предыдущий и следующий элемент относительно перетаскиваемого перетаскивателя? Что-то вроде «если #dragger слева: 55px, следующий элемент .keyframe 102px слева: 102px, а предыдущий элемент .keyframe 32px слева: 32px».

У меня есть демоверсия на http://jsfiddle.net/3pXC9/1/, просто перетащите красную полосу вокруг, при перетаскивании я должен получить ее "братьев и сестер" в зависимости от позиции.

Спасибо

1 Ответ

2 голосов
/ 15 июля 2010

Как то так?

Демо: http://jsfiddle.net/3pXC9/11/

Используемый JavaScript:

stop: function(event, ui) {
        var this_left = $(this).position().left;
        var keyframes = $(".keyframe");
        var closest_left = [null,0], closest_right = [null,0];

        keyframes.each(function(index) {

                var t = $(this);
                var offset = t.position().left - this_left;
                if (offset >= 0) {
                        if (closest_right[0] == null || offset < closest_right[1]) {
                                closest_right[0] = t;
                                closest_right[1] = offset;
                        }
                }
                else {
                        if (closest_left[0] == null || offset > closest_left[1]) {
                                closest_left[0] = t;
                                closest_left[1] = offset;
                        }
                }
        });
        /*
        closest_left[0] = closest element to the left (null if none)
        closest_left[1] = offset relative to the dragger
        the same goes for closest_right
        */
}
...