Jquery ui jQueryUI可拖动集“;位置:相对“;在我的拖鞋上
今天早上我在jQuery draggable上遇到了一个奇怪的问题,我想知道是否有其他人遇到过这个问题 我在一个大div中有许多小div。它们在CSS中绝对定位:“position:absolute”用于它们的类,实际位置本身在JS中根据需要计算和设置 现在我添加了允许这些div可拖动的功能 但是,一旦我制作了一个可拖动的,它就会直接在元素上给出“position:relative”,正如您所想象的,这会严重扰乱屏幕上的位置 有人知道它为什么会这样改变“位置”吗?或者如何告诉它不要这样做 编辑:Jquery ui jQueryUI可拖动集“;位置:相对“;在我的拖鞋上,jquery-ui,draggable,css-position,Jquery Ui,Draggable,Css Position,今天早上我在jQuery draggable上遇到了一个奇怪的问题,我想知道是否有其他人遇到过这个问题 我在一个大div中有许多小div。它们在CSS中绝对定位:“position:absolute”用于它们的类,实际位置本身在JS中根据需要计算和设置 现在我添加了允许这些div可拖动的功能 但是,一旦我制作了一个可拖动的,它就会直接在元素上给出“position:relative”,正如您所想象的,这会严重扰乱屏幕上的位置 有人知道它为什么会这样改变“位置”吗?或者如何告诉它不要这样做 编辑:
刚刚意识到有一个相当明显的答案盯着我的脸-!我的立场很重要:绝对!这似乎可以解决问题。但我仍然感兴趣的是,是否有人知道为什么它会这样设置“position:relative”(并且不会使其可配置或首先检查它是否需要position)…我想知道我刚才为自己存储了哪些问题;-) 这也发生在我身上,但只发生在Chrome上。原因 就是这样,
$("#div-popup").draggable({ handle: ".top", containment: 'document'});
$("#div-popup").draggable({ handle: ".top"});
然后我删除了包容参数,如下所示:
$("#div-popup").draggable({ handle: ".top", containment: 'document'});
$("#div-popup").draggable({ handle: ".top"});
所以这是关于浏览器(本例中为Chrome),当您指定元素可拖动的容器时,它将位置设置为相对位置 “我今天遇到了同样的问题。原因是我在一个动态创建的元素上应用了
draggable()
。我“稍后”将它附加到dom
。应用draggable()
时,元素应该在dom
中(如果类应用了样式)简言之,当它发现没有附加元素的位置时,它会添加相对的“-Jashwant”
首先做:.append(jElement)
然后:jElement.draggable()
出于某种原因,Jashwant在对问题的评论中给出了他的答案。因此,我认为将它转发到这里对其他人来说是很方便的。在我的例子中,这似乎是样式表和javascript加载之间的竞争条件
我意识到我犯了一个错误,在文档头的javascript之后包含样式表。它们应该包含在javascript之前,因为$(document).ready()
不考虑浏览器加载的CSS:您使用的是什么版本?你如何初始化它?Dragable支持绝对和相对定位。仔细检查代码,默认情况下,应该将其设置为相对的唯一原因是如果元素上没有设置位置类型。谢谢。我用的是1.7.2。位置是在类中设置的,而不是在元素上设置的,如果元素上没有draggable,我可以在Chrome调试器中看到它是“position:absolute”计算的。它是有效的。当我将draggable应用于它时,“position:relative”直接应用于元素。这可能是一个jquery错误,它应该使用getComputedStyle来查找位置。这是一个非常旧的版本。您可能应该升级到1.8,看看这是否会有所不同。您使用的是helper
draggable选项还是任何其他选项?但是,唯一确定位置:相对的一行是我今天遇到了同样的问题。原因是我在动态创建的元素上应用了draggable()
。我“稍后”将其添加到dom
。应用draggable()
时,元素应该位于dom
中(如果类正在应用样式)。简言之,当它没有找到与元素
相关的位置时,它会添加相对的
。这个问题的出现与上面1.10.2中所述的完全相同,并在Win7上的ie10中得到了体现,并且元素已经添加到DOM中,其中有一个类指定了位置:绝对值以及应用Dragable时顶部和左侧的值。设置$(“#foo”)[0]。style.position=“”;调用draggable后立即解决了有效的问题,即使我真的不知道为什么会发生这种情况。