以JQuery对话框为中心

时间:2009-08-28 20:22:07

标签: jquery jquery-ui

我有一个设置为

的JQuery对话框
position: 'center'

现在我运行数据库查询并返回一长串记录,每条记录都有一个“编辑”按钮。如果我向下滚动页面并单击记录的编辑按钮,则jquery弹出打开我的对话框并根据滚动位置居中对话框,但它也会将页面滚动重置回顶部,所以现在对话框不再居中。

所以我的问题是,

  1. 当对话框打开时,我可以阻止Jquery重置我的滚动位置吗?

  2. 如何在不使用'center'关键字的情况下将位置设置为中心?

6 个答案:

答案 0 :(得分:4)

你必须使用一个你没有告诉我们的jQuery插件,因为“center”不是“position”属性的有效值。但是,我假设您将编辑按钮设置为其href值设置为“#”的链接。这就是导致跳跃的原因。要防止这种情况,请在该按钮上的click事件处理程序中返回false:

$('a.edit').click(function () {
    // logic goes here
    return false;
});

答案 1 :(得分:2)

Tony,你的“按钮”实际上是一个链接,href设置为“#”,还有一个onclick处理程序,可以完成真正的工作。

浏览器将其解释为“转到不存在的锚点”,然后转到页面顶部。

如果你正在使用jQuery事件,那么Restlessdesign是正确的。如果您在标记中定义了onclick处理程序,那么执行以下操作:

<a href="#" onclick="doSomething();return false();" ...

答案 2 :(得分:2)

您可以使用event对象和preventDefault()方法来阻止页面跳到顶部:

$('a.edit').click(function (event) {
    event.preventDefault();
    // logic goes here
});

答案 3 :(得分:1)

这对我有用。

在我的功能中,

function myedit()
{
....
return false;
}

带链接,

<a href='#' onclick='return myedit();' >edit</a>

答案 4 :(得分:0)

我知道这是一个老帖子,但我刚遇到了这个问题,我的对话框没有居中,所以我想发布给其他可能遇到此问题的人。在我的页面中,我也使用了jQuery Dimensions插件。

如果我在dimensions脚本之后加载jQuery UI脚本,则会破坏对话框定位。在jQuery UI之前加载,对话框按预期工作。

答案 5 :(得分:0)

这几年后我偶然发现了。我希望这可以帮助其他人寻找解决方案。

源:

http://jqueryui.com/position/#default

$("#result").position({
    of: "#wrapper",
    my: "center  middle",
    at: "center middle",    
    collision: "fit flip"
})//$("#result").position({