2

我已经在我的应用程序中实现了 jQuery 拖放,它可以在除 IE 之外的任何地方工作,如果页面小于窗口(没有滚动条),它也可以在那里工作。如果页面太长并且可拖动对象靠近底部,则每次拖动都会使页面跳回顶部,然后在移动项目时内容会疯狂闪烁。有没有人见过这个?启动 sortable 的代码几乎是单行的:

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());
    }
});

但是排序仍然不起作用,因为当我开始拖动任何元素时,拖动的元素仅出现在页面的最顶部(屏幕外)。

4

2 回答 2

1

我花了一天多的时间来解决具有相同症状的问题。它仅在 IE 中。更符合标准的浏览器没有这些错误:

  1. 摇晃的对话框拖动。
  2. jQuery UI 对话框在打开时的位置没有居中或在开口之间被记住。
  3. jQuery UI 对话框调整大小导致子 DIV 意外缩小。

对我来说,这归结为缺少 DOCTYPE 声明。我希望这对其他人有帮助。我没有测试所有的 DOCTYPE。XHTML 1.0 Strict 证明了我的解决方案。

研究类似的问题,我发现了有关窗口偏移量计算错误的信息,这对我来说很有意义。如果 DOCTYPE 没有帮助,我会追求那个角度。

于 2013-01-28T16:21:37.853 回答
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>
于 2013-02-21T11:16:34.613 回答