jQuery 拖动时获取上一个和下一个元素

发布于 2024-09-10 09:16:09 字数 330 浏览 3 评论 0原文

我正在尝试做一个时间表。时间线有很少的动态关键帧元素放置在随机位置上的绝对位置。 有没有办法获取相对于可拖动拖动器的上一个和下一个元素?类似于“如果 #dragger 位于左侧:55px,则下一个元素是 .keyframe 102px 位于左侧:102px,上一个元素是 .keyframe 32px 位于左侧:32px”。

我在 http://jsfiddle.net/3pXC9/1/ 上有一个演示,只需拖动红色酒吧周围,在拖动时我应该根据位置得到它的“兄弟姐妹”。

谢谢

I am trying to do a timeline. The timeline have few dynamically keyframe elements placed with absolute position on random positions.
Is there a way to get the Previous and Next element relative to a draggable dragger? Something like "if the #dragger is at left:55px, the next element is .keyframe 102px at left: 102px and previous element is .keyframe 32px at left:32px".

I have a demo at http://jsfiddle.net/3pXC9/1/ just drag the red bar around, on drag I should get its "siblings" based on position.

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忆离笙 2024-09-17 09:16:09

像这样的东西吗?

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

Something like this?

Demo: http://jsfiddle.net/3pXC9/11/

Javascript used:

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
        */
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文