2012-04-01 134 views
0

我正在使用jquery定位(my,at,of)来显示div,作为某种按钮的下拉列表。下面的代码:当下拉DIV是可见jquery相对于可移动元素的位置

if ($('#myDiv').is(':hidden')) { 
    $('#myDiv').show().position({ 
     my: "left top", 
     at: "left bottom", 
     of: $("#myButton"), 
     "offset" : "0 -2px" 
    }); 

} else { 
    $('#myDiv').hide(); 
} 

按钮可以移动(例如其他内容得到动态添加/移除,围绕按压按钮)。问题是,当发生这种情况时,只有按钮移动并且div保持放置,所以div不再相对于按钮正确定位。

下面是一个例子小提琴:http://jsfiddle.net/2BUZU/

有有DIV始终遵循按钮不错方式?

我似乎无法找到这个问题的答案,但我确信我不是唯一遇到这个问题的人。

谢谢!

+0

你可以发布演示吗? – Joseph 2012-04-01 23:31:29

+0

div的定位应该是相对的 – Chibuzo 2012-04-01 23:33:50

+0

发布示例演示。另外,Chibuzo,我尝试将位置改变为相对位置,但我需要将下拉div显示在其他内容之上,所以我认为这不会起作用 - 除非我误解了你的意思? – 2012-04-01 23:54:32

回答

1

我通过添加容器div和animate函数来实现此目的。不知道这是什么样的解决方案,你是...后

jsFiddle DEMO

希望它能帮助!

第二个建议
找到myButton元素的position()和适当地移动myDiv

jsFiddle DEMO 2

我有一种感觉,你可以实现你需要实现使用位置和动画功能是什么。

再次,我希望这可以让你更接近你的解决方案。

+0

谢谢neo108。它并不适用于我;我需要一些可以基于任何原因移动的按钮来工作的东西,例如页面上其他地方的某些内容被添加/删除。但它仍然是一个有用的例子! – 2012-04-02 04:53:03

+0

我有一种感觉,你可以实现你需要的位置和动画功能。请看我上面的第二个建议 - 编辑了答案来添加它。 – neo108 2012-04-02 05:38:37

+0

感谢您的第二个演示,neo108。但似乎div的重新定位仍然是通过增加更多内容的点击触发的(尽管简洁的代码!)。 – 2012-04-02 21:08:35

0

虽然我想让下拉div总是自动按下它的按钮,但对我而言似乎并不是一种简单的方法。我知道什么会导致按钮移动90%的时间,所以当我触发这个时,我正在重新定位div。所以现在工作得很好。感谢提示人们。

相关问题