2010-07-18 4 views
2

플러그인 "fooPlugin"이 있다고 생각하십시오. $(element).fooPlugin(); 과 같은 요소에 첨부합니다.하지만 나중에 플러그인을 비활성화하고 싶습니다. 플러그인을 비활성화하는 방법은 무엇입니까? 현재, 나는 플러그인jquery 플러그인 비활성화

내가 jwysiwyg 플러그인과 에디터를 만드는 오전

을 jwysiwyg 사용하고 난 도와주세요 버튼을 클릭하면 편집기를 활성화하고 다른 버튼을

을 클릭하면 편집기를 제거해야합니다!

+0

비슷한 질문 http://stackoverflow.com/questions/1548426/unbind-jquery-plugins –

답변

1

플러그인을 분리 할 수있는 일반적인 방법은 없습니다. 플러그인이 노드에 대해 수행 한 작업을 알고 있으므로 해당 플러그인 만이 플러그인을 분리 할 수 ​​있습니다. 그들이 어떤 파괴 또는 방법을 제거 구현하지 않은 것처럼

$(element).fooPlugin() //add 
$(element).removeFooPlugin() //remove 

그래서 jwysiwyg 문서를 참조하거나 문의 보인다.

0

모든 플러그인에서 작동하는 보편적 인 "비활성화"기술을 찾을 수있을 것 같지 않습니다. jwysiwyg는 $ (element)에 이벤트 처리기를 연결하고 자체 "비활성화"메소드를 구현해야합니다. 그렇지 않으면 소스를 열어 핸들러가 연결되어 있는지 확인한 다음 수동으로 제거 할 수 있습니다.

0

나는 플러그인을 특별히 보지 않았지만 플러그인이 일반적으로하는 일은 마크 업을 수정 한 다음 이벤트 리스너를 첨부하는 것입니다.

예를 들어 콘텐츠 편집기에서 "굵은 글꼴", "기울임 꼴"등의 몇 가지 단추를 만든 다음 각 단추에 클릭 이벤트를 첨부 할 수 있습니다. 클릭하면 [b] ... [/ b]가 정의 된 마크 업과 같은 텍스트 영역에 추가됩니다.

이 플러그인을 "비활성화"하기 위해 수행 할 수있는 작업은 마크 업을 재설정하는 것입니다. 이렇게하려면 jquery remove 함수를 사용하여 생성 된 모든 마크 업을 제거한 다음 (컨테이너에 넣어서 쉽고 빠르게 만들어야 함) 처음부터 필요한 마크 업을 다시 추가하십시오. 이 마크 업은 이전에 만들어진 청취자의 영향을받지 않습니다.

0

다른 사람들이 언급했듯이, 플러그인이 모든 방식 (모든 플러그인이 다릅니다)을 수행 할 수있는 표준 방법이 없습니다. 플러그인을 편집해야합니다.

나는 바로이 같은 문제가 건너와이 매우 간단한 플러그인 작동 것으로 나타났습니다 :

클래스 예를 body 요소주세요 ".pluginActivated". 플러그인이 편집하기 전에 본체에 해당 클래스가 있는지 확인하기 전에 플러그인을 편집하십시오.

이제 본체에서 .pluginActivated 클래스를 제거하면 플러그인이 요소 작업을 중단합니다.

플러그인 플러그인은 당신이 '비활성화'할 물건 일을 시작하는 위치를 직접 아래 기능을 경우 그냥 코드 전에를 추가

return this.each(function(){ 

시작할 수 있습니다

if ($("body").hasClass("pluginActivated")){ 

을 (오프 닫 기억 중괄호는 끝에}를 붙인다.

이제 다른 문제가 있습니다. 플러그인이 실제로 비활성화되지 않았지만 해고 될 때 본문 클래스를 계속 확인하지만 적어도 지정된 요소에 바인딩되지 않는 원하는 효과가있을 수 있습니다.