帮助jquery模式窗口

时间:2009-10-05 20:33:37

标签: jquery modal-dialog

作为学习jquery的努力的一部分,我正在创建自己的模态窗口。到目前为止,一切似乎都很好,但我无法点击覆盖层来解雇。任何想法为什么?

您可以在jsbin上查看 - http://jsbin.com/irado

这是我的剧本:

var $j = jQuery.noConflict();
$j(document).ready(function () {
// Pause Function
    $j.fn.pause = function(duration) {
    $j(this).animate({ dummy: 1 }, duration);
    return this;
};  
// Add our click ON event
$j(".open").click(function () {
// IE6 select box iframe hack
if (jQuery.browser.msie) {
if(parseInt(jQuery.browser.version) == 6) {
  $j('body').prepend('<iframe style="z-index: 999; width:100%; height:100%; filter: alpha(opacity=0); left: 0px; zoom: 1; position: absolute; top: 0px;"  src="javascript:false;"></iframe>');
}};
// Add our overlay div
$j('body').prepend('<div id="overlay" />');
// Fade in overlay
$j('#overlay').animate({"opacity":"0.2"}, 300),
// Animate our modal window into view
$j('#window').css({"top":"45%"}).pause(200).css({"opacity":"0"}).show().animate({"top": "50%", "opacity": "1"}, 300)
});
  // Add our click OFF event
$j('a.close, #overlay').click(function () {
 //Animate our modal window out of view
$j('#window').animate({"top": "55%", "opacity": "0"}, 300).fadeOut(200),
// Fade out and remove our overlay
$j('#overlay').pause(500).fadeOut(200, function () { $j(this).remove()} )
});

});

2 个答案:

答案 0 :(得分:1)

出现问题的原因是因为您尝试在点击事件存在之前将其附加到叠加层。尝试在“.open”元素的click事件中移动click事件的绑定,因为这是您将“#overlay”添加到主体上的位置。

试试这个:

var $j = jQuery.noConflict();
$j(document).ready(function () {
// Pause Function
    $j.fn.pause = function(duration) {
    $j(this).animate({ dummy: 1 }, duration);
    return this;
};      
// Add our click ON event
$j(".open").click(function () {
// IE6 select box iframe hack
if (jQuery.browser.msie) {
    if(parseInt(jQuery.browser.version) == 6) {
      $j('body').prepend('<iframe style="z-index: 999; width:100%; height:100%;       filter:alpha(opacity=0); left: 0px; zoom: 1; position: absolute; top: 0px;"    src="javascript:false;"></iframe>');
}};
// Add our overlay div
$j('body').prepend('<div id="overlay" />');
// Fade in overlay
$j('#overlay').animate({"opacity":"0.2"}, 300),
// Animate our modal window into view
$j('#window').css({"top":"45%"}).pause(200).css({"opacity":"0"}).show().animate({"top":   "50%", "opacity": "1"}, 300)

  // Add our click OFF event
  $j('a.close, #overlay').click(function () {
  //Animate our modal window out of view
  $j('#window').animate({"top": "55%", "opacity": "0"}, 300).fadeOut(200),
  // Fade out and remove our overlay
  $j('#overlay').pause(500).fadeOut(200, function () { $j(this).remove()} )
  });

 });

});

答案 1 :(得分:0)

使用jQuery Dialog可能会容易得多。它带有一个你可以使用的'模态'标志。看看吧。