如果您在页面上打开多个jQuery UI对话框,其内容足以强制滚动条,则在对话框之间单击会导致活动的内容滚动到顶部。
你可以看到这个JSFiddle的例子(一个框在另一个框后面):http://jsfiddle.net/kRAd4/ 如果你将它们向下滚动一点,然后从一个框中单击到另一个框,你会看到它发生。
有没有办法阻止这个?
以下是JSFiddle网站上使用的代码,很简单:
HTML:
<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>
Javascript:
$(".hi").dialog({
height: 200
});
更新:
我已尝试将return false
添加到mouseDown
和focus
对话框选项中,但没有任何区别。
答案 0 :(得分:3)
看起来这是jquery UI 1.10中的一个错误,报告为here。在您的小提琴中,如果您将jquery更改为1.9.1并将jquery ui更改为1.9.2,则可以正常工作。根据错误报告,它也在1.11中修复。
答案 1 :(得分:3)
与Jared相同,我找到了描述您所遇到的错误的页面。它确实谈到1.9.2工作正常。
但是,大多数情况下,您不会回滚到项目的先前版本,我想找到一个能够保存当前文件的解决方案。因此,我测试了那里提供的一些代码。我用你的jQuery 2.0.2版本和jQuery UI 1.10.3版本创建了一个html页面。
以下解决方案可以解决您的问题,但只有在您确定没有其他影响,或者您已对其进行测试并对结果感到满意时,我才会使用它。
我用这段代码替换了jQuery UI文件中的_moveToTop
函数(整个块)(您可以在同一链接here中找到它):
_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;
},