0

軽量なので、プロジェクトで NicEdit を使用することにしました。

そのため、ページにさまざまな数のインスタンスがあり、クリックすると読み込まれ、エディターのぼかしで削除されます。

このコンポーネントからイベントをバインド解除する方法を知る必要があります。手動でバインドを解除しようとしましたが、リンクされている場所がわかりませんでした。

$('.container').bind('click', function(){
    var _form = $(this).parentsUntil('form').parent();
    var textarea = _form.find('textarea.edit');
    var ta_id = textarea.attr('id');
    var ed = new nicEditor(niceditOptions).panelInstance(ta_id);

    // Show Preview and update textarea and so on
    ed.addEvent('blur', function() {
        var _ed = nicEditors.findEditor(ta_id);
        var ev_type, evt, events = this.eventList;

        for (ev_type in events){
            for (evt in ev_type){
                if (this.removeEventListener){
                    this.removeEventListener(ev_type, events[ev_type][evt]);
                }
                else {
                    this.detachEvent('on' + ev_type, events[ev_type][evt]);
                }
            }
        }
        this.removeInstance(ta_id);
    });
            
});
4

1 に答える 1

0

ソリューションを実行する方法は他にもある可能性がありますが、このシナリオでは、 1つのバージョンのnicEditorパネルを使用して、すべてのWYSIWYGインスタンスをバインドすることをお勧めします。その理由は、少しきれいだと思うからです。1つのエディターを複数の編集可能なインスタンスにバインドする方法を知っていることを前提としています。

ロードすると、私のHTMLはおそらく次のようになります。

<div id="instance1">text</div>
...
<div id="instance2">text</div>
...
<div id="myNicPanel" style="display:none;position:relative;"></div>

したがって、ページの読み込みサイクルが完了すると、2つの編集可能な領域と非表示のエディターが必要になります。次に、次のjQueryを使用して、インスタンスが編集用に選択されたときにエディターを再配置して表示します。

        $('#instance1 , #instance2').click(function () {
         //Reposition the editor to just above the selected instance
            $('#myNicPanel').css({
                top: $(this).position().top,
                left: $(this).position().left,
                display: 'block',
                width: $(this).width() - 2 //manual adjustment,
                position: 'absolute'
            });
         //Make the width of the editor equal to that of the instance
            $('#myNicPanel').css({
                top: $(this).position().top - $('#myNicPanel').height()
            });
        });

もちろん、これより前に既にエディターとインスタンスを開始しているはずです。また、ぼかし時にエディターを再び非表示にしたい場合は、hide()関数をnicEditorイベントの1つにアタッチできます。

于 2012-10-19T07:47:59.913 に答える