22

我为我们的一款产品使用了jQuery ui(jquery-ui-1.10.3)对话框插件,发现了一个可能的“问题”:当托管页面较小或托管页面的当前视图滚动到顶部时,拖动打开的对话框的行为符合预期。当在一个滚动到顶部以外的某个地方的大页面中托管一个对话框时,问题开始显现,在这种情况下,对话框在拖动过程中开始四处跳动。它发生在 IE 9 和最新的 Firefox (21.0) 上。

该页面是动态生成的、复杂的并且必须很长。我不熟悉小提琴,但它似乎没有我可以使用的 jQuery-ui lib 选项的选项。

更具体地说,我发现如果我将托管页面向下滑动 100 像素(因此托管页面的顶部 100 像素“馈入”到浏览器窗口的顶部边框中)然后当我拖动对话框而不是跟随鼠标时,它向下跳 100 像素,使其脱离鼠标捕获。

对话框初始化为

$(元素).dialog({
    自动打开:假,宽度:950,高度:820,
    模态:假,可调整大小:真,可拖动:真
});

我的问题是:1)其他人有同样的问题吗?2)如果是这样,这是设置问题还是错误。

这里的任何专家可以帮助我吗?

4

6 回答 6

35

我曾经有同样的问题,页面上的内容是自动生成的。它很长。

html, body {position: relative}解决问题。

于 2013-11-01T15:29:06.880 回答
10

好的,我发现这是 jQuery-ui 1.10.3 的一个错误,请参见此处

这仅在使用 UI 1.10.3 并且滚动条不在 Firefox、Opera、IE8 的最顶部时出现。

在 Chrome 中可以正常工作,并且在其他浏览器上也可以使用 1.10.2。

UI 对话框演示页面也有这个错误:

向下拖动对话框直到出现滚动条再次向下滚动 向下拖动对话框。对话框随着偏移量下降

于 2013-06-22T07:11:35.653 回答
6

我修复这个 bug 的方法和 Dado 类似,但是使用了拖动事件:

        $(element).dialog({
            draggable: true,
            drag: function(event, ui) {
                var fixPix = $(document).scrollTop();
                iObj = ui.position;
                iObj.top = iObj.top - fixPix;
                $(this).closest(".ui-dialog").css("top", iObj.top + "px");
            }
        });

我的版本:jQuery UI - v1.10.3 - 2013-10-10

于 2014-10-08T17:23:24.730 回答
2

我认为有一个错误。我也遇到过这个问题。我解决此问题以关闭拖动的解决方案。只是使可拖动为假。像这样:

$(element).dialog({ 
    autoOpen: false, width: 950, height: 820, 
    modal: false, resizable: true, draggable: false
});
于 2013-09-19T04:19:06.323 回答
1

更新对我有用的 jQuery UI 库 (js)。 http://jqueryui.com/download/
记得更新你的css文件。

于 2014-08-08T20:09:51.610 回答
0

错误报告:查看错误报告

我修复此错误的解决方案是“重置”“ui.position.top”(对我来说是 228px)。

$(element).dialog({
    dragStart: function(event, ui) {
        var fixPix = 228; // offset top (add your own here!)
        iObj = ui.position;
        if (iObj.top > fixPix) {
            iObj.top = iObj.top - fixPix;
        }
        ui.position = iObj;
    }
});

我的版本:jQuery UI - v1.10.4 - 2014-01-17

这个解决方案对我有用。希望它对您也有帮助,直到这个丑陋的错误得到修复。

于 2014-06-27T16:07:44.080 回答