我已经在我的应用程序中实现了jQuery拖放功能,除了IE之外,它可以在任何地方工作,如果页面小于窗口(没有滚动条),它也可以在那里工作。如果页面太长而且可拖动位于底部附近,则每次拖动都会导致页面跳回到顶部,随后在项目移动时内容会随之闪烁。谁看过这个吗?启动可排序的代码几乎是单行代码:
jQuery('#childrenlist').sortable({items:'div', update:updateChildrenOrder});
更新:我可以通过设置scroll:false并设置容器的高度来消除生涩的闪烁,如下所示:
jQuery('#childrenlist').sortable({
items:'.sortrow',
scroll: false,
update:updateChildrenOrder,
create:function(){
jQuery(this).height(jQuery(this).height());
}
});
排序仍然不起作用,因为当我开始拖动任何元素时,拖动的元素仅出现在页面的最顶部(屏幕外)。
答案 0 :(得分:1)
我在一个有相同症状的问题上花了一天多的时间。它只在IE中。符合标准的浏览器没有这些错误:
对我而言,归结为缺少DOCTYPE声明。我希望这有助于其他人。我还没有测试过所有的DOCTYPE。我的解决方案已通过XHTML 1.0 Strict证明。
研究类似问题,我发现information关于窗口偏移的错误计算,这对我来说很有意义。如果DOCTYPE没有帮助,我会追求那个角度。
答案 1 :(得分:0)
是的原因之一可能是缺少或不正确的DOCTYPE声明。此外,如果您希望IE在标准模式而不是怪异模式下工作,那么在IE中的DOCTYPE声明之前绝对不应该(甚至不是注释)。 Quirks模式会错误地渲染CSS,并且还会对CSS框模型进行自己的修改,这可能是由于位置计算不正确导致jQuery拖放问题的根本原因。这样做:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>Insert title here</title>
</head>
<body>
Content here
</body>
</html>