为简单模态/动态模态高度触发onresize事件

时间:2010-03-23 20:33:22

标签: javascript jquery

有没有办法可以在javascript / jQuery中为我的窗口触发onresize()事件?

我试过了:

$(window).resize();

但这似乎并不像预期的那样完全奏效。 simplemodal jQuery插件为您提供autoPosition模态窗口的选项。有时在IE中,模态显示偏离中心但是一旦我手动改变窗口大小,它就会完美地居中。所以我想只触发onresize事件,这样就会自动将autoPosition的simplemodal设置为true

好吧,我认为我的问题的一部分是我试图使模态动态的高度,如果内容会通过显示或隐藏元素在模态中改变,那么大小也是如此。

继承我的模态电话:

$(selector).modal({
    //autoPosition: true,
    //autoResize: true,
    onShow: function(dlg) {
        $(dlg.container).css('height', 'auto') // dynamic height based on content
    },
    onOpen: function(dialog) {
        dialog.overlay.fadeIn('slow', function() {
            dialog.data.hide();
            dialog.container.fadeIn('slow', function() {
                dialog.data.slideDown('slow');
            });
        });
    },
    onClose: function(dialog) {
        dialog.data.fadeOut('slow', function() {
            dialog.container.hide('slow', function() {
                dialog.overlay.slideUp('slow', function() {
                    $.modal.close();
                });
            });
        });
    }
});

如果我注释掉onShow属性,那么事情就会再次发挥作用。所以我想也许这是问题的一部分。有没有办法根据内容动态调整模式的大小,这不会产生这个问题?

使用simplemodal-1.3.4

2 个答案:

答案 0 :(得分:2)

您的方法应该有效,但可能无法触发您想要的simplemodal事件,例如:

$(window).resize(function() {
  alert("resized");
});
$(window).resize(); //alerts "resized"

针对您的特定问题的解决方案可能是:

$(window).trigger('resize.simplemodal');

答案 1 :(得分:0)

据我所知,你应该使用

$(window).resize(function() {
  // your code
});

不适合你吗?你到底在想什么?