【问题标题】:Popup window not working while clicking on button单击按钮时弹出窗口不起作用
【发布时间】:2016-03-16 08:03:09
【问题描述】:

我正在创建一个简单的弹出窗口,我不知道我在哪里做错了,但我得到的只是我在样式标签中提到的背景颜色,而不是弹出窗口的内容。我已经在代码中提到/链接了脚本文件和 css 文件。请帮我解决这个问题。

$(document).ready(function(){
        
        $('a.default').click(function(){
            
            var popupbox = $(this).attr('href');
            $(popupbox).fadeIn(400);
            
            var popMargTop = ($(popupbox).height()+24)/2;
            var popMargLeft = ($(popupbox).width()+24)/2;
            $(popupbox).css({
                'margin-top': -popMargTop,
                'margin-left': -popMargLeft
            });
            $('body').append('<div id="mask"></div>');
            $('#mask').fadeIn(400);
            return false;
        });
        
        
        $('a.close, #mask').on('click', function(){
            $('#mask, .popupinfo').fadeOut(400, function(){
                $('#mask').remove();
            });
        });
    });
    
        $(document).keyup(function(e){
            if(e.keyCode == 27){
                $('mask, .popupinfo, #popup-box').fadeOut(400);
                return false;
                
            }
        })
body {
            background: #e2e2e2;
            margin: 0px;
            padding: 0px;
            color: #fff;
        }
        .popupinfo {
	       display: none;
            padding: 15px;
            border: 1px solid #1852fd;
            float: left;
            font-size: 1.2em;
            position: fixed;
            top: 50%;
            left: 50%;
            margin: -100px 0 0 -100px;
            z-index: 99999;
            box-shadow: 0px 0px 4px #1852fd;
            -moz-box-shadow: 0px 0px 4px #1852fd;
            -webkit-box-shadow: 0px 0px 4px #1852fd;
            border-radius: 5px;
            -moz-border-radius: 5px;
            -webkit-border-radius: 5px;
        }
        #mask {
            display: none;
            background: #9ACD32;
            position: fixed;
            left: 0;
            top: 0;
            z-index: 88888;
            width: 100%;
            height: 100%;
            opacity: 0.9;
        }
    
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="clearfix">
        <a class="btn btn-circle btn-sm default">
            Open <i class="fa fa-user"></i>
        </a>
    </div>
     
     <div id="popup-box" class="popupinfo">
        <form>
            <label>This can be anything</label><br>
         <input type="text" name="random" /><br>
            <a href="javascript:;" class="btn btn-circle btn-sm close">
                Close <i class="fa fa-user"></i>
            </a>
        
         
         
         </form>
     
      </div>

谢谢

【问题讨论】:

  • 缺少 jquery.add &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"&gt;&lt;/script&gt;in 你的标题 tag。它应该可以工作。
  • 这会更容易用现场样本来回答,比如小提琴或代码笔......而且你似乎在你的风格和脚本周围缺少 标签(假设你试图把他们在头脑中)
  • 我在问题本身中提到强制文件已被我包含在内。

标签: jquery css html


【解决方案1】:

我已经更正了你的代码,这里是工作代码:

$(function() { // DOM loaded    

    var openPopup = function(e) { // Function to open the popup
        $(e).fadeIn(400);
        $('#mask, .popupinfo').fadeIn(400);
    };    

    var closePopup = function() { // Function to close the popup
        $('#mask, .popupinfo').fadeOut(400);
    };    

    $('a.default').click(function(e) {
    
        e.preventDefault();
        var popupbox = $(this).attr('href');
        openPopup(popupbox);
        
        var popMargTop = ($(popupbox).height()+24)/2;
        var popMargLeft = ($(popupbox).width()+24)/2;
        $(popupbox).css({
            'margin-top': -popMargTop,
            'margin-left': -popMargLeft
        });
    });    

    $('a.close, #mask').on('click', function() {
        closePopup();
    });
    
    $(document).keyup(function(e) {
        if (e.keyCode == 27) {
            closePopup();
        }
    });    

});
body {
    background: #e2e2e2;
    margin: 0px;
    padding: 0px;
    color: #fff;
}

.popupinfo {
   display: none;
    padding: 15px;
    border: 1px solid #1852fd;
    float: left;
    font-size: 1.2em;
    position: fixed;
    top: 50%;
    left: 50%;
    margin: -100px 0 0 -100px;
    z-index: 99999;
    box-shadow: 0px 0px 4px #1852fd;
    -moz-box-shadow: 0px 0px 4px #1852fd;
    -webkit-box-shadow: 0px 0px 4px #1852fd;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
}

#mask {
    display: none;
    background: #9ACD32;
    position: fixed;
    left: 0;
    top: 0;
    z-index: 88888;
    width: 100%;
    height: 100%;
    opacity: 0.9;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div id="mask"></div>

<div class="clearfix">
    <a href="#popup-box" class="btn btn-circle btn-sm default">
        Open <i class="fa fa-user"></i>
    </a>
</div>

 <div id="popup-box" class="popupinfo">
    <form>
        <label>This can be anything</label><br>
        <input type="text" name="random" /><br>
        <a href="javascript:;" class="btn btn-circle btn-sm close">
            Close <i class="fa fa-user"></i>
        </a>
    </form>
</div>

【讨论】:

  • 非常感谢您的帮助,但在按下 esc 按钮或在弹出窗口外单击时它不会消失
  • 在弹窗外点击消失
  • 您在弹窗打开事件中硬编码#popup-box,因此它不能用作具有不同弹窗的不同锚点的通用特征
  • @GeneR,你是对的,我在你的解决方案中将硬编码的 ID 固定到 href 属性中。
  • @NitishKumar,JS 代码重构为更加模块化的方法。在弹出功能之外添加了点击。
【解决方案2】:

href="#popup-box" 添加到打开弹出窗口的锚点:

<div class="clearfix">
    <a class="btn btn-circle btn-sm default" href="#popup-box">
        Open <i class="fa fa-user"></i>
    </a>
</div>

示例:https://jsbin.com/gewibibule/edit?html,output

mask之前也缺少#

$(document).keyup(function(e){
    if(e.keyCode == 27){
        $('#mask, .popupinfo, #popup-box').fadeOut(400);
        return false;

    }
})

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 1970-01-01
    • 2018-12-17
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多