2012-10-08 5 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

예! 텍스트가 여러 개 있습니다. 나는 텍스트 영역을 클릭하는 편집기를 활성화하고 블러 (nicEdit blur) 편집기를 비활성화한다. 현재 인스턴스를 제거하고 편집기 외부를 클릭하면 (nicEdit blur), blur 이벤트는 콘솔 로그에서 여전히 어딘가에 바인드됩니다. 다른 텍스트 영역을 클릭하면 다른 편집기를 만들고 다른 블러 이벤트를 첨부합니다. 구성 요소가 어떻게 작동하는지 또는 인스턴스 제거시 더러운 것이 있습니까? – Davide

+0

그래, 문제가되는 것처럼 들리니 텍스트 상자를 선택할 때마다 새 편집기 패널을 만들려고하는 것입니까? 하나의 편집기 패널을 사용해 보셨습니까? 언 바인드 할 때 그것을 숨길 수 있고 클릭 할 때'show' 할 수 있습니다. 그러면 편집기의 클릭 된 인스턴스에 대해 다시 배치하는 것뿐입니다. nicEditor는 하나의 편집기 패널 인스턴스에서 아주 잘 작동하므로 일반적으로이 방법을 사용합니다. 이 문제를 해결할 수 있다고 생각하면 예제를 쓸 수 있습니다. – JDandChips

답변

0

다른 해결책이있을 수 있지만,이 시나리오에서는 버전의 nicEditor 패널을 사용하고 모든 WYSIWYG 인스턴스를 바인딩하는 것을 선호합니다. 그 이유는 내가 약간 깔끔하다고 생각하기 때문입니다. 나는 당신이 어떻게 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> 

그래서, 나는 두 개의 편집 가능한 지역과 숨겨진 편집기를해야한다. 당신은 또한이 원한다면 당신은 물론 이미 편집이 이전 인스턴스를 시작했을

 $('#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() 
      }); 
     }); 

, 그리고 : 나는 다음 인스턴스 편집을 선택하면 위치를 변경하고 편집기를 보여주기 위해 다음과 같은 jQuery를 사용합니다 편집기가 흐림 효과를 다시 숨기면 hide() 함수를 nicEditor events 중 하나에 첨부 할 수 있습니다.

+0

내 시나리오에서이 접근 방식은 사용자 경험이 여러 인스턴스보다 더 명확하게 만듭니다. 콘텐츠를 업데이트하려면 저장 클릭시 사용자 지정 이벤트를 트리거하는 방법을 이해해야합니다. 많은 감사드립니다! – Davide

관련 문제