load()在模态体内多次激活

时间:2012-11-13 19:57:55

标签: jquery ajax twitter-bootstrap

我正在开发一个打开引导模式的脚本,然后用“im sure”按钮确认你的选择,然后你确认你的选择(如果它成功提交)它将一个注释表单加载到模态体中。注释表单存储在部分中,注释表示使用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来实现。任何帮助将不胜感激。

感谢您查看我的代码。

3 个答案:

答案 0 :(得分:1)

这是因为变量模式被设置为$('.modal-body'),而它们在DOM中的多个多样性的位置。一旦我将其缩小到var modal = modal_div.find('.modal-body');,它就能够只选择当前的模态体。

答案 1 :(得分:0)

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

$(this).load('myurl/page',{/*JSON data*/},function () {
    console.log("load complete");
});'

答案 2 :(得分:0)

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

$('#myModal').unbind();