1

我正在编写一个打开引导模式的脚本,然后您使用“我确定”按钮确认您的选择,然后是 post(),如果它成功提交,它会将评论表单加载到模式正文中。评论表单存储在一个partial中,评论使用wysihtml5。这是我当前的代码:

    modal_div.find('.confirm-o-c').click(function(ee){
            $.post(
                lnk.attr('href'),
                function(data, textStatus, jqxhr){
                    console.log(data);

                    var lbl = lnk.parent().prev().children('.label').first();
                    lbl.fadeOut('fast');
                    lbl.attr('class','label label-'+data.status)
                       .text(data.text)
                       .fadeIn('fast');
                    var newlnk = $('<a href="#">newlink</a>');
                    newlnk.attr('href',lnk.attr('href').replace('complete','revert'));
                    lnk.parent().append(newlnk);
                    lnk.remove();
                    var status = data.status;
                    var id = data.object.id;
                    var objective_id = data.object.objective_id;

                    if(status === 'submitted'){
                        modal.fadeOut('fast', function(){
                            modal.load('<?=URL::to_action('objectives/completion_comment/')?>/'+id, function(){  
                                modal.fadeIn('fast');
                                $('#message-'+objective_id).wysihtml5();

                            });

                            $('#confirm-objective-complete').addClass('modal-large');
                            $('#submit-comment').css("display", "inline-block");
                            oldfooterbtn.css("display", "none");
                            footerbtncancel.css("display", "none"); 
                            footerbtnclose.css("display", "none");  
                            confirmtext.css("display", "none");                 
                        });
                    };

                });
            // objectives.init();
            ee.preventDefault();

问题 确认后,帖子效果很好,它返回提交,但是当评论表单被引导时,我的控制台显示它发生了 8 次,我收到了这个错误 TypeError: f.contentWindow is null

我见过一些像:

    $(this).one('load', function () {
        console.log("load complete");
    });'

但我想不出我们如何使用像我这样的 URL 来实现。任何帮助将不胜感激。

感谢您查看我的代码。

4

3 回答 3

1

之所以发生这种情况,是因为变量 modal 被设置为$('.modal-body')它们在 DOM 中的多个实例。一旦我把它缩小到var modal = modal_div.find('.modal-body');它只能选择当前的模态体。

于 2012-11-13T22:12:40.323 回答
0

像这样:http ://api.jquery.com/load/

$(this).load('myurl/page',{/*JSON data*/},function () {
    console.log("load complete");
});'
于 2012-11-13T20:14:27.130 回答
0

确保您没有将多个事件绑定到模式。您可以使用 unbind 函数清除它,特别是如果多次绑定事件:

$('#myModal').unbind();
于 2020-02-14T09:40:25.090 回答