我遇到了同样的问题,发现原因是由于Bootstrap导航栏使用了"navbar-fixed-top"类,使得它的位置被固定在页面顶部,并使得我的标签的位置比标签的顶部低了60个像素。因此,当我在我的网站上移动可拖动表单时,光标会出现在表单的顶部之上60个像素。
你可以在Chrome调试工具中查看这一点,在Elements界面中点击标签,你就会看到顶部和body之间有一个间隙。
由于我在我的应用程序中广泛使用此导航栏,并且不想为每个表单修改我的初始化调用以进行拖动(依照DarthJDG的过程) 。所以我决定通过这种方式扩展可拖动小部件,并在我的可拖动初始化中添加了一个yOffset。
(function($) {
$.widget("my-ui.draggable", $.ui.draggable, {
_mouseDrag: function(event, noPropagation) {
this.position = this._generatePosition(event);
this.positionAbs = this._convertPositionTo("absolute");
if (!noPropagation) {
var ui = this._uiHash();
if(this._trigger('drag', event, ui) === false) {
this._mouseUp({});
return false;
}
this.position = ui.position;
}
var yOffset = ("yOffset" in this.options) ? this.options.yOffset : 0;
if(!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left+'px';
if(!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top-yOffset+'px';
if($.ui.ddmanager) $.ui.ddmanager.drag(this, event);
return false;
}
});
})(jQuery);
现在当我在使用Bootstrap导航栏时,初始化可拖动的元素/表单:
// Make the edit forms draggable
$("#org_account_pop").draggable({handle:" .drag_handle", yOffset: 60});
当然,您需要进行实验以确定适合自己网站的正确yOffset。
感谢DarthJDG指引我正确的方向。干杯!