我正在使用 jQuery可拖动的 and 可丢弃的对于我正在开发的工作计划系统。用户将作业拖到不同的日期或用户,然后使用 ajax 调用更新数据。
一切工作正常,除了当我向下滚动主页时(工作出现在超出浏览器窗口底部的大型周计划表上)。如果我尝试在此处拖动可拖动元素,该元素会在鼠标光标上方显示与我向下滚动相同数量的像素。悬停状态仍然可以正常工作,并且功能正常,但看起来不正确。
我正在使用 jQuery 1.6.0 和 jQuery UI 1.8.12。
我确信我需要添加一个偏移函数,但我不知道在哪里应用它,或者是否有更好的方法。这是我的.draggable()
初始化代码:
$('.job').draggable({
zIndex: 20,
revert: 'invalid',
helper: 'original',
distance: 30,
refreshPositions: true,
});
知道我能做些什么来解决这个问题吗?
这可能是一个相关的错误报告,它已经存在很长一段时间了:http://bugs.jqueryui.com/ticket/3740
我测试的每个浏览器(Chrome、FF4、IE9)似乎都会发生这种情况。您可以通过以下几种方法来解决此问题:
1. Use position:absolute;
在你的CSS中。绝对定位的元素似乎不受影响。
2.确保父元素(如果是主体则为事件)overflow:auto;
放。我的测试表明该解决方案修复了位置,但它禁用了自动滚动功能。您仍然可以使用鼠标滚轮或箭头键滚动。
3.手动应用上述错误报告中建议的修复,并彻底测试是否会导致其他问题。
4.等待官方修复。它计划在 jQuery UI 1.9 上发布,尽管过去已经被推迟了几次。
5.如果您确信这种情况在每个浏览器上都会发生,您可以将这些 hack 放入受影响的可拖动对象的事件中以纠正计算。不过,需要测试很多不同的浏览器,因此它只能作为最后的手段:
$('.drag').draggable({
scroll:true,
start: function(){
$(this).data("startingScrollTop",$(this).parent().scrollTop());
},
drag: function(event,ui){
var st = parseInt($(this).data("startingScrollTop"));
ui.position.top -= $(this).parent().scrollTop() - st;
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)