当jquery对话框打开时,窗口向上滚动

zoo*_*277 20 jquery scroll position jquery-ui-dialog

我试图使用jquery 1.4和jquery-ui-1.8rc3.custom.js打开模态jquery对话框

在所有浏览器中,对话框打开都没有问题,但在IE 7和6中,对话框打开后,窗口自动滚动到按钮...我尝试将窗口向上滚动回到模态位置但是非常不一致.打开模态后使用以下代码行

window.scrollTo($('#selector').dialog('option', 'position')[0],$('#selector').dialog('option', 'position')[1]);
Run Code Online (Sandbox Code Playgroud)

我注意到的一个奇怪的事情是,在我打开模态之后,页面变得巨大......好像一些额外的东西加在底部......它最终滚动到底部.任何想法为什么这可能是hapenning

在HTML中

<div id="selector">
</div>
Run Code Online (Sandbox Code Playgroud)

在document.ready

$('#selector').dialog({
  bgiframe: true,
  autoOpen: false,
  width: 100,
  height: 100,
  modal: true,
  position: 'top'
});
Run Code Online (Sandbox Code Playgroud)

在js

$('#selector').dialog('open');
Run Code Online (Sandbox Code Playgroud)

bas*_*sim 38

如果您使用下面的锚标记来触发对话框

<a href="#" onclick="$(#id).dialog('open');">open dialog</a>
Run Code Online (Sandbox Code Playgroud)

你要一个添加return false;onclick属性:

<a href="#" onclick="$(#id).dialog('open'); return false;">open dialog</a>
Run Code Online (Sandbox Code Playgroud)

这可以防止页面重新加载#导致它跳转到顶部.

  • 这确实有帮助.当我打开一个模态时,在FF中,屏幕会滚动到顶部,但模态会保持不变. (2认同)

小智 6

我也在努力解决这个问题.我没有使用任何主题,所以我没有这个重要的CSS属性:

position:absolute;
Run Code Online (Sandbox Code Playgroud)

我将此添加到我的CSS文件中,现在一切正常:

.ui-widget { position: absolute; }
Run Code Online (Sandbox Code Playgroud)


Mot*_*tie 3

看起来您#在选择器中缺少:

window.scrollTo($('#selector').dialog('option', 'position')[0], $('#selector').dialog('option', 'position')[1]);
Run Code Online (Sandbox Code Playgroud)

这可能就是窗口滚动到左上角的原因。


编辑:我只是在查看文档,.dialog('option','position')默认值是center.

位置 类型:字符串、数组 默认值:'center'

指定对话框应显示的位置。可能的值:1) 表示视口内位置的单个字符串:“center”、“left”、“right”、“top”、“bottom”。2) 包含 x,y 坐标对的数组,以距视口左上角的像素偏移量表示(例如 [350,100]) 3) 包含 x,y 位置字符串值的数组(例如 ['right','top'] for右上角)。

因此,您可以使用位置选项返回文本或数字,并且window.scrollTo()需要数字。所以试试这个:

var d = $(".ui-dialog").position();
window.scrollTo( d.left , d.top);
Run Code Online (Sandbox Code Playgroud)