javascript - 动态按钮不调用功能

标签 javascript jquery

我正在尝试使用 JavaScript 创建一个简单的模态函数。

html:

<button id="button">open</button>

js:

// define box width
            var boxHeight = 200,
                modal = $('<div id="modal" class="modal-fade"><button class="close">close x</button><div id="foo" /></div><div id="overlay" class="modal-fade" />');

            $('body').append(modal);

            // modal open function
            function openModal(boxHeight){ 
                $('#modal').css({
                    height: boxHeight,
                    marginTop: -(boxHeight / 2)
                });

                $('#modal, #overlay').fadeIn(200);
            }

            // modal close function , removes its elements and append it again
            function closeModal(){
                $('body').find('#modal, #overlay').fadeOut(200, function(){
                    $(this).remove();
                    $('body').append(modal);
                });
            }

            // modal open onclick
            $('#button').on('click', function(e){
                e.preventDefault();

                openModal(boxHeight);
            });

            // modal close onclik
            $('body').find('#modal button.close').on('click', function(e){
                e.preventDefault();

                closeModal();
            });

第一次一切都很顺利。首先,我单击 button#button,它调用 openModal(),它打开模式,然后当我单击 .close 时,调用 closeModal() 它会关闭模态框,将其从 DOM 中删除,然后通过 $('body').append(modal) 将模态框的结构再次附加到正文中。第二次就坏了。当我点击 button.close 时,模式打开,但 closeModal() 不起作用。

JSFiddle: https://jsfiddle.net/gemrw44k/1/

最佳答案

我不知道从 DOM 中删除元素的原因,但你可以在 close 方法中使用委托(delegate):

// modal close onclik
$(document).on('click', '#modal button.close', function(e){
    e.preventDefault();                
    closeModal();
});

Fiddle

关于javascript - 动态按钮不调用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43900092/

相关文章:

javascript - 如果选择框是,则每 x 秒播放一次声音?

javascript - Meteor 0.8.0 blaze 中的模板渲染回调

javascript - slider 革命 + BarbaJS (PJAX)

javascript - 你知道一个前沿的 HTML5 利用、忽略遗留的 JavaScript 框架吗?

jquery - 正确显示来自 AJAX (ASP.NET MVC) 的数据

javascript - 未定义 CKEditor UI 空间

javascript - 在重新抛出的错误中合并堆栈跟踪

javascript - 我们如何对在线 Dynamics CRM 中的注释进行分类/标记?

java - (Spring + JSP + jQuery-AJAX + JSON)设置环境的 UTF-8 问题?

javascript - 如何将单击的 div 的类名作为参数传递给函数