无法调整JQuery模式窗口的大小

时间:2012-10-05 17:48:00

标签: javascript jquery window modal-dialog

CSS:

#mask {
    position: absolute;
    z-index: 9000;
    background-color: #000;
    display: none;          
}
#boxes .window {
    position: fixed;
    width: 800px;
    height: 600px;
}   
#boxes #dialog {
    background: #f2f2f2 url('App_Themes/prompt_panel_gradient.png') top left repeat-x;           
    width: 800px;
    height: 600px;
}

HTML:

<div id="boxes">
    <div id="dialog" class="window">
        <b>Testing modal window</b> |
        <a href="#" class="close">Close it</a>            
    </div>
    <div id="mask">
    </div>
</div>

使用Javascript:

<script type="text/javascript">
$(document).ready(function() {

$('a[name=modal]').click(function(e) {
    //Cancel the link behavior
e.preventDefault();
//Get the A tag
var id = $(this).attr('href');

//Get the screen height and width
var maskHeight = $(document).height();
var maskWidth = $(window).width();

//Set height and width to mask to fill up the whole screen
$('#mask').css({ 'width': maskWidth, 'height': maskHeight });

//transition effect     
$('#mask').fadeIn(500);
$('#mask').fadeTo("slow", 0.9);

    //Get the window height and width
    var winH = $(window).height();
    var winW = $(window).width();

    //Set the popup window to center
    $(id).css('top', winH / 2 - $(id).height() / 2);
    $(id).css('left', winW / 2 - $(id).width() / 2);                

    //transition effect
    $(id).fadeIn(500);
});

//if close button is clicked
    $('.window .close').click(function(e) {
    //Cancel the link behavior
    e.preventDefault();
        $('#mask, .window').hide();
    });

    $('#mask').click(function() {
    $(this).hide();
    $('.window').hide();
    });
});

</script>

一切正常,模态窗口打开背景图片,链接工作正常,但尺寸不是800x600也不能改变模态窗口的大小。我错过了什么?感谢

2 个答案:

答案 0 :(得分:0)

所以,在查看了你的代码之后,这就是我想出来的......如果这是你想要的,你可能想看看jQuery选择器以及它们是如何工作的......

http://jsfiddle.net/Mutmatt/Mr5Qe/8/

JS:

$('a.close').click(function(e) {//Note this gets the 'a' with the class (dot notation) 'close'
    //Cancel the link behavior
    e.preventDefault();
    //Get the A tag
    var id = $(this).attr('href');

    //Get the screen height and width
    var maskHeight = $(this).parent().height();//this ('a' with 'close' class) parent (dialog div)
    var maskWidth = $(this).parent().width();
    console.log("Mask Height [" + maskHeight + "]");
    console.log("Mask Width [" + maskWidth + "]");

    //Set height and width to mask to fill up the whole screen
    $('#mask').css({
        'width': maskWidth,
        'height': maskHeight
    });

    //transition effect     
    $('#mask').fadeIn(500);
    $('#mask').fadeTo("slow", 0.9);

    //Get the window height and width
    var winH = $(window).height();
    var winW = $(window).width();

    //Set the popup window to center
    $(id).css('top', winH / 2 - $(id).height() / 2);
    $(id).css('left', winW / 2 - $(id).width() / 2);

    //transition effect
    $(id).fadeIn(500);
});

//if close button is clicked
$('.window .close').click(function(e) {
    //Cancel the link behavior
    e.preventDefault();
    $('#mask, .window').hide();
});

$('#mask').click(function() {
    $(this).hide();
    $('.window').hide();
});

HTML

<div id="boxes">
    <div id="dialog" class="window">
        <b>Testing modal window</b> |
        <a href="#" class="close">Close it</a>            
    </div>
    <div id="mask">
    </div>
</div>​

CSS:

#mask {
    position: absolute;
    z-index: 9000;
    background-color: #000;
    display: none;          
}
#boxes .window {
    position: fixed;
    width: 800px;
    height: 600px;
}   
#boxes #dialog {
    background: #f2f2f2 top left repeat-x;           
    width: 800px;
    height: 600px;
}​

答案 1 :(得分:-1)

我发现只需在html中的div声明中添加宽度和高度就可以解决问题。我仍然不确定为什么它在css代码中使用时没有任何影响。

代码:

<div id="dialog" class="window" style="width:800px;height:600px;">