今天早上我遇到了jQuery draggable的奇怪问题,我想知道是否有其他人遇到过这个问题。
我在一个大div里面有很多小div。它们绝对定位:CSS中的“position:absolute”为其类,实际位置本身在JS中按需计算和设置。
现在我正在添加允许这些div可拖动的功能。
但是,只要我制作一个可拖动的,就会直接在元素上给出“position:relative”,正如您可能想象的那样,会严重影响屏幕上的位置。
有谁知道为什么它会改变这样的“位置”或如何告诉它不要?
修改
刚才意识到有一个相当明显的答案正盯着我看! - 对我的立场很重要:绝对!这似乎解决了这个问题。但是我仍然感兴趣,如果有人知道为什么它设置这样的“位置:相对”(并且不能使其可配置或首先检查它是否需要位置)...我想知道我刚刚存储了什么问题为我自己; - )
答案 0 :(得分:12)
“我今天遇到了同样的问题。原因是我在动态创建的元素上应用draggable()
。我'稍后'将其附加到dom
。元素应该在{{} 1}}当您应用dom
时(如果某个类正在应用样式)。简而言之,当它找不到draggable()
附加的位置时,它会添加element
。“ - Jashwant
Firs do:relative
然后:.append(jElement)
出于某种原因,贾什万特在对问题的评论中提出了答案。所以我认为其他人在这里重新发布会很方便。
答案 1 :(得分:0)
这也发生在我身上,但仅限于Chrome。原因?
就是这样:
$("#div-popup").draggable({ handle: ".top", containment: 'document'});
然后我删除了包含参数,如下所示:
$("#div-popup").draggable({ handle: ".top"});
所以它是关于浏览器(在这种情况下是Chrome),当你指定元素可以拖动的包含时,它将位置设置为Relative。
答案 2 :(得分:0)
在我的情况下,它似乎是样式表和javascript加载之间的竞争条件......
我意识到我错误地在文档头部中包含javascript之后的样式表。它们应该包含在javascript之前,因为$(document).ready()
不考虑浏览器加载的CSS:https://stackoverflow.com/a/1324720/3633109