1

我正在尝试为我的 textarea使用最新的 tiny mce - TinyMCE 3.5b3 jQuery package的 jquery 版本。我创建了一个弹出窗口来加载表单,这就是问题所在 - 第一次加载后,如果再次单击相同的加载弹出按钮,ajaxload将中断。

这是查看我的意思的链接。

但是,我用另一个load 没有弹出窗口的 ajax 进行了测试,然后 jquery ajax 就可以正常工作了。

jQuery,

$('.button-popup').click(function(){

    var object = $(this);

    // Remove any previous popup first.
    $(".popup").remove();

    // Now prepend a fresh popup.
    $(document.body).prepend("<div id='popup-edit' class='popup'></div>");

    // Load the content into the popup.
    $('#popup-edit').load('full.html', {}, function(){

        $('#binder-form').prepend("<div class='close'><a href='#' class='button-close'> x close </a></div>");   

        $('#binder-form').css({
            padding:"20px", 
            backgroundColor:"#ffffff"
        });

        $('textarea.tinymce').get_tinymce();
        $('form *[title]').inputHints();
        $('.button-submit').submit_form();

        $('.close').click(function(){
            $('.popup').fadeOut('fast',function(){
                //$(this).remove();
            });
            return false;
        });

    });

    return false;
});

$('.button').click(function(){

    $('.content').load('full.html', function() {
        $('textarea.tinymce').get_tinymce();
        $('form *[title]').inputHints();
        $('.button-submit').submit_form();

    });

    return false;
});

的插件$('textarea.tinymce').get_tinymce();jsfiddle中。

4

1 回答 1

1

问题是#binder-form关闭模式后仍然在页面上。您应该在模态关闭时删除#binder-form元素。

只需取消注释在关闭单击事件中注释掉的那一行:

    $('.close').click(function(){
        $('.popup').fadeOut('fast',function(){
            $(this).remove(); // this will remove the popup element
        });
        return false;
    });

我倾向于避免在使用 ajax 的页面中依赖元素 id 属性。拥有两个具有相同 id 的元素会导致各种难以捕捉的错误。坚持在 jQuery 中为此使用类选择器。

[编辑] 嗯,不,你是对的,你正在删除.popup下一次点击,一个异常导致它破坏点击处理程序并点击链接到full.html.

我会说小 mce 出于某种原因引发错误,尝试将其包装在 try catch 块中以查看确切原因。

于 2012-04-15T19:12:39.167 回答