2012-10-08 92 views
0

我決定在項目中使用NicEdit,因爲它是輕量級的。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); 
    }); 

}); 

非常感謝!達維德。

+0

我不明白,你正試圖解開別的東西?你能否爲你想達到的目標增加一些清晰度? – JDandChips

+0

當然!我有多個textareas。我激活編輯器點擊textarea並關閉模糊處理器(nicEdit blur)。當我刪除當前實例時,單擊編輯器外部(nicEdit blur),blur事件仍然綁定在某處,並在控制檯日誌中進行檢查。點擊另一個textarea,我建立另一個編輯器並附加另一個模糊事件。我不明白組件是如何工作的,或者在刪除實例時有什麼髒東西? – Davide

+0

是的,所以它聽起來像問題是,你正試圖創建一個新的編輯器面板,每次你選擇一個文本框?你有沒有嘗試過使用一個編輯器面板?您可以在解除綁定時將其「隱藏」,在點擊時將其「隱藏」,然後您只需對着編輯器的單擊實例重新「定位」即可。這通常是我的做法,因爲nicEditor在一個編輯器面板實例中運行得非常好。如果你認爲這可以解決你的問題,我可以寫一個例子。 – JDandChips

回答

0

還有其他方法可以解決您的問題,但在這種情況下,我更願意使用一個版本的nicEditor面板並綁定我所有的所見即所得實例。原因是我認爲它稍微整齊一些。我會假設你知道如何bind one editor to multiple editable instances

負載我的HTML可能會是這個樣子:

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

所以,一旦頁面已經完成它的負載週期,我應該有兩個可編輯區域和一個隱藏的編輯器。然後我會用下面的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 events之一。

+0

在我的情況下,這種方法使用戶體驗比多個實例更清晰。 我必須瞭解如何通過點擊保存點擊來觸發自定義事件,以更新內容..非常感謝! – Davide