我目前使用jTemplates在客户端上创建一个相当大的表,每一行都有一个按钮,将打开一个jQuery UI对话框。但是,当我向下滚动页面并单击其中一个按钮时,jQuery对话框将打开,但滚动位置丢失,页面跳回到顶部(阻止和实际对话框显示屏幕)。有没有人看到或知道什么可能会导致这个问题?如何在弹出jQuery UI对话框时防止滚动到页面顶部?
谢谢。
我目前使用jTemplates在客户端上创建一个相当大的表,每一行都有一个按钮,将打开一个jQuery UI对话框。但是,当我向下滚动页面并单击其中一个按钮时,jQuery对话框将打开,但滚动位置丢失,页面跳回到顶部(阻止和实际对话框显示屏幕)。有没有人看到或知道什么可能会导致这个问题?如何在弹出jQuery UI对话框时防止滚动到页面顶部?
谢谢。
您是否使用锚标签来实现弹出对话框的“按钮”?如果是这样,您需要打开对话框的点击处理程序返回false,以便不调用锚点标记的默认操作。如果您使用的是按钮,您还需要确保它不会提交(通过从处理程序返回false)并完全刷新页面。
例如,
$('a.closeButton').click(function() {
$('#dialog').dialog('open');
return false;
});
<a class='closeButton'>Close</a>
我有同样的问题,当使用angularjs和浪费了一些小时发现使用[ng-click](http://docs.angularjs.org/api/ng.directive:ngClick)时应避免使用href属性。 – Ritesh 2013-09-19 21:36:53
@Ritesh反正这里真的不需要它。我已经删除。 – tvanfosson 2013-09-20 13:22:43
好的。如果你删除了href属性,那么鼠标光标不会显示出来,你可能需要做一些样式。在angularjs的情况下,它不会自动处理它。 – Ritesh 2013-09-20 22:02:13
改变你这样的代码
$('a.closeButton').click(function(e) {
e.preventDefault();
$('#dialog').dialog('open');
});
你可以试试:
scrollTo(0, jQuery("body"));
如果你的按钮与HTML锚标记工作与href="#"
更换href例如通过href="javascript:;"
或任何其他用于禁用的方法HREF。滚动发生的原因是因为href="#"
滚动到页面的顶部。
看到此之前,但后来我用下面的插件,以确保滚动位置不丢失http://plugins.jquery.com/project/ScrollTo – 2009-07-20 21:08:33