Dynamic TinyMCE中的动态菜单按钮项

Dynamic TinyMCE中的动态菜单按钮项,dynamic,tinymce,refresh,Dynamic,Tinymce,Refresh,我在tinyMCE编辑器中有一个自定义菜单按钮,它使用页面上其他地方的特定HTML元素作为菜单项。我使用jQuery选择器获取元素列表,然后每个元素添加一个作为菜单项: c.onRenderMenu.add(function(c,m) { m.add({ title: 'Pick One:', 'class': 'mceMenuItemTitle' }).setDisabled(1); $('span[data-menuitem]').each(function() { var

我在tinyMCE编辑器中有一个自定义菜单按钮,它使用页面上其他地方的特定HTML元素作为菜单项。我使用jQuery选择器获取元素列表,然后每个元素添加一个作为菜单项:

c.onRenderMenu.add(function(c,m) {
  m.add({ title: 'Pick One:', 'class': 'mceMenuItemTitle' }).setDisabled(1);
  $('span[data-menuitem]').each(function() {
    var val = $(this).html();
    m.add({ 
      title: $(this).attr("data-menuitem"), 
      onclick: function () { tinyMCE.activeEditor.execCommand('mceInsertContent', false, val) }
    });
  });
});
我的问题是,这种情况只在第一次单击按钮和第一次呈现菜单时发生一次。当前页面上的HTML元素会根据用户单击和一些AJAX偶尔更改,因此我需要在每次呈现菜单时运行此选择器代码,以确保菜单完全是最新的。可能吗

如果做不到这一点,是否可以从页面中其他地方的AJAX调用结束时动态更新控件?我不知道如何访问菜单项和更新它。使用
tinyMCE.activeEditor.controlManager
的东西


谢谢

我找到了解决这个问题的方法,尽管我不确定这是不是最好的方法

看起来我无法让tinyMCE重新呈现菜单,因此我在AJAX调用的末尾添加了一些代码:在它更新DOM之后,然后手动更新tinyMCE下拉菜单

菜单对象可通过以下方式访问:

tinyMCE.activeEditor.controlManager.get('editor_mybutton_menu')
其中mybutton是自定义控件的名称。我的快速而肮脏的解决方案是在此菜单对象上调用
removeAll()
(删除所有当前菜单项),然后重新执行选择器代码,在(新)DOM中查找匹配的元素,并根据新状态重新添加菜单项

它似乎工作得很好,尽管调整和想法总是受欢迎的