【问题标题】:jQuery Get Previous and Next element on DragjQuery在拖动时获取上一个和下一个元素
【发布时间】:2010-07-15 17:02:29
【问题描述】:
我正在尝试做一个时间表。时间线几乎没有以绝对位置放置在随机位置上的动态关键帧元素。
有没有办法获得相对于可拖动拖动器的上一个和下一个元素?类似于“如果#dragger 在左侧:55px,下一个元素是左侧的 .keyframe 102px:102px,上一个元素是左侧的 .keyframe 32px:32px”。
我在http://jsfiddle.net/3pXC9/1/ 有一个演示,只需拖动红色条,拖动时我应该根据位置获得它的“兄弟”。
谢谢
【问题讨论】:
标签:
jquery
jquery-ui
draggable
【解决方案1】:
这样的?
演示: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
*/
}