2009-07-20 79 views
27

我目前使用jTemplates在客户端上创建一个相当大的表,每一行都有一个按钮,将打开一个jQuery UI对话框。但是,当我向下滚动页面并单击其中一个按钮时,jQuery对话框将打开,但滚动位置丢失,页面跳回到顶部(阻止和实际对话框显示屏幕)。有没有人看到或知道什么可能会导致这个问题?如何在弹出jQuery UI对话框时防止滚动到页面顶部?

谢谢。

+0

看到此之前,但后来我用下面的插件,以确保滚动位置不丢失http://plugins.jquery.com/project/ScrollTo – 2009-07-20 21:08:33

回答

66

您是否使用锚标签来实现弹出对话框的“按钮”?如果是这样,您需要打开对话框的点击处理程序返回false,以便不调用锚点标记的默认操作。如果您使用的是按钮,您还需要确保它不会提交(通过从处理程序返回false)并完全刷新页面。

例如,

$('a.closeButton').click(function() { 
    $('#dialog').dialog('open'); 
    return false; 
}); 


<a class='closeButton'>Close</a> 
+1

我有同样的问题,当使用angularjs和浪费了一些小时发现使用[ng-click](http://docs.angularjs.org/api/ng.directive:ngClick)时应避免使用href属性。 – Ritesh 2013-09-19 21:36:53

+0

@Ritesh反正这里真的不需要它。我已经删除。 – tvanfosson 2013-09-20 13:22:43

+0

好的。如果你删除了href属性,那么鼠标光标不会显示出来,你可能需要做一些样式。在angularjs的情况下,它不会自动处理它。 – Ritesh 2013-09-20 22:02:13

5

改变你这样的代码

$('a.closeButton').click(function(e) { 
    e.preventDefault(); 
    $('#dialog').dialog('open'); 
}); 
-2

你可以试试:

scrollTo(0, jQuery("body")); 
10

如果你的按钮与HTML锚标记工作与href="#"更换href例如通过href="javascript:;"或任何其他用于禁用的方法HREF。滚动发生的原因是因为href="#"滚动到页面的顶部。

相关问题