2

からのリダクター WYSIWYG: https://github.com/dybskiy/redactor-js

JQuery バージョン: jquery-1.10.1.min.js (デモにバンドルされている 1.9.0 も試しました)

非常に単純で、編集アイコンがコンテンツの右上に表示され、クリックするとコンテンツが WYSIWYG エディターに変更され、アイコンが X に変更されてキャンセルされます

オンクリック X、エディターを破棄、WYSIWYG エディターを元のテキストに戻す

このページからのヒントに従ってください: http://imperavi.com/redactor/examples/click-to-edit/ 違いは、2 つの関数が必要ないことです。クラスに応じて、1 つの関数に結合しています。 editContainer が持っている場合、どの if-else が実行されるかによって異なります

問題: .redactor('destroy'); 動作しません

<style>
    #editContainer {
        position: absolute;
        right: 5px;
        top: 5px;
        width: 16px;
        height: 16px;
    }
    #editContainer.edit {
        background: url("../img/icon-edit-16.png") no-repeat 0 0;
        z-index: 999;
        cursor: pointer;
    }
    #editContainer.cancel {
        background: url("../img/icon-error.png") no-repeat 0 0;
        z-index: 999;
        cursor: pointer;
    }
</style>
<div id='headerRightContent'>
    xxx
</div>

<div id='editContainer' class='edit' onclick=cmsEdit();></div>
<script type='text/javascript'>
    function cmsEdit() {
        if ( $('#editContainer').hasClass('edit') ) {
            $('#headerRightContent').redactor({ focus: true });
            $('#editContainer').removeClass('edit').addClass('cancel');
        }else if ( $('#editContainer').hasClass('cancel') ) {
            var html = $('#headerRightContent').redactor('get');
            $('#headerRightContent').redactor('destroy');
            $('#editContainer').removeClass('cancel').addClass('edit');
        }
    }
</script>
4

2 に答える 2

3

Redactor II でこの問題が発生している場合は、コマンドが少し変更されました。

$('#headerRightContent').redactor('core.destroy');
于 2016-11-10T23:05:13.623 に答える
2

RedactorJS のライセンスを購入した場合、destroyメソッドは最新バージョン 9.1.1 で正常に動作します

または、コードを次のように更新します。

destroy: function()
{
    clearInterval(this.autosaveInterval);

    $(window).off('.redactor');
    this.$element.off('.redactor').removeData('redactor');

    var html = this.get();

    if (this.opts.textareamode)
    {
        this.$box.after(this.$source);
        this.$box.remove();
        this.$source.val(html).show();
    }
    else
    {
        var $elem = this.$editor;
        if (this.opts.iframe) $elem = this.$element;

        this.$box.after($elem);
        this.$box.remove();

        $elem.removeClass('redactor_editor').removeClass('redactor_editor_wym').removeAttr('contenteditable').html(html).show();
    }

    if (this.opts.air)
    {
        $('.redactor_air').remove();
    }
},
于 2013-08-15T08:03:51.650 に答える