Contenttools - 通过jQuery追加数据

时间:2016-06-21 02:08:36

标签: javascript

出于与MathJax相关的原因,我需要动态清除Contenttools可编辑区域中的内容,然后将新元素附加到可编辑区域。当我将元素追加到该区域时,Contenttools不会将它们视为可编辑的。我在AJAX回调中使用了以下jQuery代码:

$(".contentArea").empty().append($(response.data.content))

内容按我的意愿显示,但不可编辑。谁能帮我?我也尝试在加载新内容后使用editor.init(...)重新启动编辑器,但似乎也没有注册新内容。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

好吧,听起来发生的事情是,当您请求内容的Tex版本替换当前MathML时,编辑器已启动,因此当您替换可编辑区域内的内容时,它会直播导致编辑器和页面不同步。

我不能轻易地针对您的具体情况尝试这一点,但以下代码概述了我将采取的初步方法来解决您所描述的内容,如果您让我知道您是如何进行的,如果有的话修改是必需的我会很高兴地更新它。

var editor = ContentTools.EditorApp.get();

// Add a flag to the editor that indicates when the tex version of the content
// has loaded.
editor.texLoaded = false;

// Capture the start event against the editor, the first time around we load
// the tex version of our content, the second time around we intialize the 
// editor as normal. 
editor.addEventListener('start', function(ev) {

    // Has the Tex content been loaded, if so do nothing we're ready to start
    // editing.
    if (this.texLoaded) {
        return;
    }

    // If the Tex content hasn't been loaded then cancel the start event
    ev.preventDefault();

    // Load the Tex content
    $.ajax({
        url: "/get-tex?..."
    }).done(function (response) {
        // From the response update the contents of the editable region
        $('.contentArea')[0].innerHTML = response.data.content;

        // Flag that the tex version of the content is now in place
        this.texLoaded = true;

        // Start the editor
        editor.start();
    });
});

答案 1 :(得分:0)

正在加载内容,但您无法编辑? 试试这种方式

$(".contentArea").empty().append($(response.data.content));
//Reset the editable function