javascript - 将模态存储在变量中并在点击时显示

标签 javascript jquery

我想将模态存储在变量中,然后在用户单击按钮时显示模态。我试过了,但是当我点击按钮时没有任何反应,也没有控制台错误。

$( '.outlet' ).on('click', function(e) {
        e.preventDefault();
        var prodID = $(this).data('id');
        var modal = `
                        <div class="modal fade" id="myModal" role="dialog">
                            <div class="modal-dialog">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                                        <h4 class="modal-title">Modal Header</h4>
                                    </div>
                                    <div class="modal-body">
                                        <p>Some text in the modal.</p>
                                    </div>
                                    <div class="modal-footer">
                                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    `;
         $(modal).show();
    });

最佳答案

您必须将 modal 绑定(bind)到 DOM,以使其可见。在您的代码中,您的 modal 变量的 HTML 不在 DOM 中,这就是它不显示的原因。

喜欢在这里展示:

$("body").before(modal).show();

尽管您不需要 show(),因为您使用 before 函数将 HTML 附加到 DOM(HTML 代码除外有一个样式属性设置为 display:none 或者你想要一个动画或者...)。

这里是工作示例。 我添加了一些 HTML 以使示例运行。

$( '.outlet' ).on('click', function(e) {
        e.preventDefault();
        var prodID = $(this).data('id');
        var modal = `
                        <div class="modal fade" id="myModal" role="dialog">
                            <div class="modal-dialog">
                                <div class="modal-content">
                                    <div class="modal-header">
                                        <button type="button" class="close" data-dismiss="modal">&times;</button>
                                        <h4 class="modal-title">Modal Header</h4>
                                    </div>
                                    <div class="modal-body">
                                        <p>Some text in the modal.</p>
                                    </div>
                                    <div class="modal-footer">
                                        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                                    </div>
                                </div>
                            </div>
                        </div>
                    `;
                    console.info("IN THE CLICK FUNCTION");
         $("body").before(modal);
         $(".modal").show();
   
    });
.modal { 
margin:50px;
position: fixed; 
top: 0; 
right: 0; 
bottom: 0; 
left: 0; 
z-index: 99; 
display: none; 
overflow: hidden; 
-webkit-overflow-scrolling: touch; 
outline: 0; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<button class="outlet">test</button>
</body>

关于javascript - 将模态存储在变量中并在点击时显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50572238/

相关文章:

javascript - 如何获取两个位置之间路线的中心纬度和经度

javascript - 为什么触发的最后一个拖动事件具有负 x 和 y 坐标?

javascript - Onclick 事件未选择正确的开关选项

php - 使用 PHP 替换文件夹中的现有文件之前确认

javascript - 使用 Twilio 向收件人列表发送消息

javascript - 基于 webpack 入口点创建环境变量

javascript - Rails 4 - 如何禁用 'panzoom' 中的拖动?

Jquery After() 除非

javascript - 有没有一种方法可以让滚动的 div 触发另一个 div 使用 jQuery 进行滚动?

php - 在 CSS 菜单中选择表单失去 CSS 下拉菜单的焦点