Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery UI多个对话框内容跳转到顶部_Javascript_Jquery_Jquery Ui_Dialog - Fatal编程技术网

Javascript jQuery UI多个对话框内容跳转到顶部

Javascript jQuery UI多个对话框内容跳转到顶部,javascript,jquery,jquery-ui,dialog,Javascript,Jquery,Jquery Ui,Dialog,如果在一个页面上打开了多个jQuery UI对话框,其中的内容足以强制滚动条,那么在对话框之间单击会导致活动对话框的内容滚动到顶部 您可以看到这个JSFIDLE作为示例(一个框在另一个框后面): 如果你把它们都向下滚动一点,然后从一个框点击到另一个框,你就会看到它发生了 有没有办法阻止这一切 下面是JSFIDLE站点上使用的代码,很简单: HTML: 更新: 我尝试将return false添加到mouseDown和focus对话框选项中,但没有效果。据报道,这似乎是jquery UI 1.10

如果在一个页面上打开了多个jQuery UI对话框,其中的内容足以强制滚动条,那么在对话框之间单击会导致活动对话框的内容滚动到顶部

您可以看到这个JSFIDLE作为示例(一个框在另一个框后面): 如果你把它们都向下滚动一点,然后从一个框点击到另一个框,你就会看到它发生了

有没有办法阻止这一切

下面是JSFIDLE站点上使用的代码,很简单:

HTML:

更新:
我尝试将
return false
添加到
mouseDown
focus
对话框选项中,但没有效果。

据报道,这似乎是jquery UI 1.10中的一个错误。在您的小提琴中,如果您将jquery更改为1.9.1,将jQueryUI更改为1.9.2,它就会工作。根据bug报告,它在1.11中也得到了修复。

与Jared一样,我找到了描述您遇到的bug的页面。它确实谈到了1.9.2工作良好

但是,大多数情况下,您不会回滚到项目上的早期版本,我希望找到一种解决方案来保存当前文件。因此,我使用这里提供的一些代码进行了测试。我用jQuery2.0.2版本和jQueryUI1.10.3版本创建了一个html页面

下面的解决方案解决了您的问题,但只有在您确定不会有其他影响,或者您已经测试过并且对结果满意的情况下,我才会使用它

我将jQuery UI文件中的
\u moveToTop
函数(整个区块)替换为这段代码(您可以在同一链接中找到它):


谢谢,欧姆瑞-我会在周一回去工作的时候试一试。先生,这很好,我想请你喝一杯,但这可能不会发生。请在它的位置接受100个e点。然后我忘记给你了。现在就做吧!谢谢Jared-我到处都搜索了,但显然没有使用正确的单词组合!
<div class="hi">Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br /></div>

<div class="hi">Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br />Here<br />Is<br />A<br />Lot<br />Of<br />Text<br /></div>
$(".hi").dialog({
    height: 200
});
_moveToTop: function( event, silent ) {
    var $parent = this.uiDialog.parent();
    var $elementsOnSameLevel = $parent.children();

    var heighestZIndex = 0;
    $.each($elementsOnSameLevel, function(index, element) {
        var zIndexOfElement = $(element).css('z-index');
        if (zIndexOfElement) {
            var zIndexOfElementAsNumber = parseInt(zIndexOfElement) || 0;
            if (zIndexOfElementAsNumber > heighestZIndex) {
                heighestZIndex = zIndexOfElementAsNumber;
            }
        }
    });
    var currentZIndex = this.uiDialog.css('z-index');

    var moved;
    if (currentZIndex >= heighestZIndex) {
        moved = false;
    } else {
        this.uiDialog.css('z-index', heighestZIndex + 1);
        moved = true;
    }

    if ( moved && !silent ) {
        this._trigger( "focus", event );
    }

    return moved;
},