关于 SimpleModal jQuery 插件的问题 -- 可以在初始打开后重新居中吗?

Question about SimpleModal jQuery plugin -- possible to re-center after initial open?

提问人:Andrew G. Johnson 提问时间:3/20/2010 最后编辑:Andrew G. Johnson 更新时间:3/7/2012 访问量:2102

问:

我的问题与SimpleModal jQuery插件有关。我打开模态窗口没有问题,但是一旦打开它,它就会停留在屏幕上[居中]的位置,但是它的内容正在发生变化,使其更高,因此不再居中。有没有一种简单的方法可以重新对齐它,使其再次居中?

编辑:我认为通过显示两个屏幕截图来解释我的问题会有所帮助:之前之后 - 基本上我正在使用jQuery的slideUpslideDown功能来隐藏信用卡表单,具体取决于用户是通过现金/支票还是信用卡付款。显然,使用信用卡字段时,容器的高度会增加。

我尝试添加slideUp / slideDown的回调元素,但无济于事 - 实际上抛出JS错误,因为显然该函数不存在。我总是尝试添加 autoResize 选项并将其设置为 true。$("div#modal-element").setPosition()setPosition()

jquery simplemodal

评论

0赞 Eric Martin 3/21/2010
我回答了你的问题,删除了它,然后编辑了它......但直到现在才忘记取消删除它。如果它无助于解决您的问题,请告诉我。Nick Craver 的回答也会有所帮助,除非您在选项中有 autoPosition:false。

答:

2赞 Eric Martin 3/20/2010 #1

如果你在其中一个回调中,你可以访问所有函数和属性 - 所以你可以调用 setPosition() 来重新居中对话框。例如:

$(element).modal({
    onShow: function (dialog) {
        var modal = this;

        // do stuff and change the container dimensions

        modal.setPosition(); // re-center the container
    }
});

我还没有测试代码,但它应该可以工作。

它)

评论

0赞 Andrew G. Johnson 3/22/2010
@Eric - 你能快速看一下我的截图,看看你认为这应该有效吗?我的代码似乎认为setPosition()函数不存在
0赞 Eric Martin 3/23/2010
你寄给我了吗?只要你在回调中取消它,它就应该可以工作......
3赞 Nick Craver 3/20/2010 #2

由于 SimpleModal纵以处理窗口大小调整时的重新居中,因此最简单的方法是触发该事件。内容更改后,只需调用以下命令:

$(window).resize();

评论

0赞 Andrew G. Johnson 3/22/2010
@Nick - 我认为我们走在正确的道路上,但由于某种原因,这导致我的模态框停留在原地,但添加了滚动条
0赞 Nick Craver 3/24/2010
@Andrew G. Johnson - 不幸的是,SimpleModal 没有公开 diaog 对象(在它的回调之外),最接近它的事件是$(window).trigger('resize.simplemodal');