jQuery在Drag上获取Previous和Next元素

时间:2010-07-15 17:02:29

标签: jquery jquery-ui draggable

我正在尝试制定时间表。时间轴上几乎没有动态关键帧元素放置在随机位置上的绝对位置。 有没有办法获得相对于可拖动拖动器的Previous和Next元素?像“如果#dragger在左边:55px,下一个元素是.keyframe 102px在左边:102px,前一个元素是.keyframe 32px在左边:32px”。

我在http://jsfiddle.net/3pXC9/1/进行了演示,只需拖动红色条,拖动我应该根据位置获得“兄弟姐妹”。

谢谢

1 个答案:

答案 0 :(得分:2)

这样的东西?

演示: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
        */
}