嗯,今天在同一个问题上花了 3 个小时......使用 Jquery UI 1.10 和 TinyMCE 4。
问题是,当取消选中时,ajax 面板的内容并没有从 DOM 中删除,而是被隐藏了。这意味着 textarea 在 DOM 中可能超过 1 次(导航面板)。 => 微型 MCE 之死...
Jquery 1.10 中没有事件来捕获“未选择的面板”。您必须处理加载前事件。
所以想法是在加载面板之前清空每个“ajax 加载”面板。代码:
$( "#list_onglet_lecteur" ).tabs({
beforeLoad:
function( event, ui ) {
$("#list_onglet_lecteur div[role=tabpanel]").each(function(){
if($(this).attr("id") != "list_onglet_lecteur-accueil")$(this).empty();
});
$(ui.panel).html('<div style="width:100%;text-align:center"><img src="/images/ajax_loader_big.gif" alt=""></img><br />Chargement de l\'onglet</div>');
ui.jqXHR.error(function() {
ui.panel.html("Echec du chargement de l'onglet. Merci d'actualiser la page.");
});
}
})
请注意,我没有找到区分“ajax 加载面板”和“预加载面板”的方法......
这很遗憾,因为您必须将每个“预加载面板”ID 添加到代码中...
无论如何,这解决了微小的 MCE 问题。无需初始化加载事件,并使用 mceRemoveControl/mceAddControl 命令。
只需在“ajax 加载选项卡面板”视图中初始化 tinyMCE 编辑:
$(function() {
tinyMCE.init({
height : 300,
mode : "specific_textareas",
editor_selector : "mceEditor",
theme : "modern",
language : 'fr_FR',
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media contextmenu paste moxiemanager"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});
});