问题:
使用多个实例化的标准jQueryUI对话框时,如下所示:
$("#dialog").dialog({});
$("#dialog2").dialog({});
如果有大量内容或已设置特定的高度导致滚动条,则在滚动条内部滚动之后,将焦点对准相反的对话框,滚动条的位置将在与之交互的第一个对话框上重置(或在所有其他对话框中3个或更多对话框)。
有关问题的演示:
http://jsfiddle.net/Drath/yGL22/
重现步骤:
额外:
寻找可能的解决方法,因为这似乎是一个错误。我无法使用任何选项/方法/事件组合来找到解决此问题的方法。这似乎发生在焦点事件之前,因此我无法找到使用该事件的解决方法。
能够在搜索查询中使用“ _moveToTop”找到解决方案。在此可以找到有关此问题的官方错误票证:http : //bugs.jqueryui.com/ticket/9166
在即将发布的jQueryUI 1.11.0版中已修复此问题。如果您在jQueryUI 1.10.4或更低版本上运行此问题,则解决方法如下:
加载jQueryUI之后,通过加载以下代码来覆盖_moveToTop函数:
$.widget('ui.dialog', $.ui.dialog, { _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;
}});
信用将通过该票证分配给用户joern.zaefferer。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句