0

TinyMCE 4 有一个方便的 toggleClass 功能,http: //archive.tinymce.com/wiki.php/api4: method.tinymce.dom.DOMUtils.toggleClass 我想使用它,但这个特殊的项目结合了旧的 TinyMCE 3.5 .11 ..

我希望以下内容可以在 v3 中使用:

tinymce.create('tinymce.plugins.ClassToggle', {
    createControl: function(n, cm) {
        switch (n) {
            case 'exampleclasstoggle':
                var exampleclasstoggle = cm.createButton('exampleclasstoggle', {
                    title : 'Toggle example class',
                    image : '/admin/js/icons/exampleclass.png',
                    onclick : function(v) {
                        cm.editor.selection.toggleClass('example');
                    }
                });

                return exampleclasstoggle;
        }
    }
});

tinymce.PluginManager.add('classtoggle', tinymce.plugins.ClassToggle);

但是它只是抛出了 toggleClass() 不是一个函数的错误,所以很明显 v3 API 只是不提供这个。

有谁知道 TinyMCE 3 的插件提供了 toggleClass() 或类似的,或者有更好的方法吗?

我实际上只是想在编辑器中添加按钮,以便在选择的任何元素上切换几个预定义的类。

问候。

4

2 回答 2

0

这是 TinyMCE 4 中用于 toggleClass 的代码:

    toggleClass: function(elm, cls, state) {
        this.$$(elm).toggleClass(cls, state).each(function() {
            if (this.className === '') {
                $(this).attr('class', null);
            }
        });
    }

只需将此函数添加到您的代码中并传递正确的参数即可。

(这是在 TinyMCE 4 的 DOMUtils.js 文件中)

于 2016-08-26T14:01:12.420 回答
0

设法使用 tinymce.dom API 来访问 hasClass、addClass 和 removeClass 函数...

tinymce.create('tinymce.plugins.ClassToggle', {
    createControl: function(n, cm) {
        switch (n) {
            case 'exampleclasstoggle':
                var exampleclasstoggle = cm.createButton('exampleclasstoggle', {
                    title : 'Toggle example class',
                    image : '/admin/js/icons/exampleclass.png',
                    onclick : function(v) {
                        if(cm.editor.dom.hasClass(cm.editor.selection.getNode(), 'example')) {
                            cm.editor.dom.removeClass(cm.editor.selection.getNode(), 'example');
                        } else {
                            cm.editor.dom.addClass(cm.editor.selection.getNode(), 'example');
                        }
                    }
                });

                return exampleclasstoggle;
        }
    }
});

tinymce.PluginManager.add('classtoggle', tinymce.plugins.ClassToggle);
于 2016-08-26T15:15:34.043 回答