jquery datepicker动态更改位置

我在我的页面上使用了几个日期选择器,在某些情况下我用其中一个隐藏了一个div。 之后,其他日期选择器的位置不再正确,它们远远高于输入。 我认为那是因为这个地方是在初始化时确定的,因为如果我再次显示div,那么这个位置是正确的。

但是,如果其他日期选择器(div)隐藏,如何使其更改的位置?

也许在beforeShow事件中设置位置:

 $(".is-datepicker").datepicker("option", "beforeShow", function(input, inst){ $(inst.dpDiv).position({ my: "left top", at: "left bottom", of: $(input) }); 

在1.8版本中添加了position() http://api.jqueryui.com/position/

的jsfiddle

添加另一个答案,因为接受的答案对我不起作用,因为我使用的是1.7,也许其他人会觉得这很有用。

可以使用_checkOffset方法根据需要进行更改

 $.datepicker._checkOffset_original = $.datepicker._checkOffset; $.datepicker._checkOffset = function(inst, offset, isFixed) { var offset = $.datepicker._checkOffset_original(inst, offset, isFixed); var alterOffset = this._get(inst, 'alterOffset'); if (alterOffset) return alterOffset.apply((inst.input ? inst.input[0] : null), [offset]); // trigger custom callback return offset; } 

并在datepicker上设置想要的回调

 $('#id').datepicker('option', 'alterOffset', function(offset){ //change offset here return offset; });