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)
这可以防止页面重新加载#
导致它跳转到顶部.
小智 6
我也在努力解决这个问题.我没有使用任何主题,所以我没有这个重要的CSS属性:
position:absolute;
Run Code Online (Sandbox Code Playgroud)
我将此添加到我的CSS文件中,现在一切正常:
.ui-widget { position: absolute; }
Run Code Online (Sandbox Code Playgroud)
看起来您#
在选择器中缺少:
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)