2011-03-22 5 views
0

기존 jQuery 플러그인이 있으므로 지금 확장하려고합니다. 아래 언급 된 플러그인을 고려하십시오.기존 jQuery 플러그인 확장

$.fn.x = function(option) { 
     var defaults = { 
      a: 1, 
      b: 2 
     }; 

     option = $.extend(def, option); 
     function abc() { 
      //do something 
     } 
     function def() { 
      //do something 
     } 
    }; 

위의 플러그인은 내가 어딘가에서 얻은 플러그인입니다. 난 당신이 같은 확장 또는 내 자신의 사용자 정의 플러그인을함으로써 내가 같은 달성 할 수있는 방법을 말해 줄 수, 나는 기존의 플러그인을 변경하지 않는, ABC 방법에 대한 사용자 정의 동작을 필요

function abc() { 
       //do something else 
      } 

말 ?

+1

변화 플러그인없이 확장의 어려움에 대한 자세한 내용은 다음을 참조이다이 질문] (HTTP : // 유래. co.kr/questions/2050985/best-way-to-extend-a-jquery-plugin). – justkt

답변

1

로컬 변수로 선언 되었기 때문에이 특정 상황에서 메서드를 대체/재정의 할 수 없습니다. 가장 좋은 해결책은 자신 만의 플러그인을 작성하거나이 플러그인을 abc의 옵션으로 확장하는 것입니다. 이 같은 뭔가 :

function abc() { 
    if(!!option.abc){ 
     return option.abc.call(this);  
    } 
    alert('old abc'); 
} 
+0

설명해 주시겠습니까? 또는 abc 함수 옵션을 사용하여이 기능을 확장하십시오. 기존 플러그인을 건드리지 않으려 고합니다. –

+0

@ 록키 싱 (Rocky Singh) - 어떻게 플러그인이 작성 되었기 때문에 나는 주위에 방법이 보이지 않습니다. 직접 작성하거나 다른 플러그인을 찾아야합니다. –

0

당신이 찾고있는 무슨 생각이 jQuery extend

newFunctionality = { 
    abc: function(){ 
     alert('yo'); 
    } 
} 

$.extend($.fn.x, newFunctionality); 
$.fn.x.abc() #=> 'yo' 
+0

이것은 작동하지 않습니다. 함수의 로컬 범위가 지정됩니다. –