2016-10-02 1 views
1

외부에서 jQuery 샘플 플러그인 코드의 메소드를 대체하는 방법.jquery 플러그인의 메소드를 대체 할 수 없습니다.

//This is simplified skeleton of infinatescroll plugin. 
    (function ($) 
    { 
     var defaults = { 
      prop: 'name' 
     }; 

     var methods = { 
      init: function (params) 
      { 
       //Some code 
       return this; 
      }, 
      retrive: function() 
      { 
       console.log('Inside Plugin'); 
       return this; 
      } 
     }; 

     $.fn.my_plugin = function() 
     { 
      //Some code 
      return methods.retrieve.apply(this, arguments); 
     }; 

    })(jQuery); 

다음과 같이 '검색'방법을 재정의하려하지만 작동하지 않습니다.

(function() 
{ 
    var originalPlugin=$.fn.my_plugin; 
    $.fn.my_plugin.retrive = function() 
    { 
     console.log('Outsite Plugin'); 
    }; 

    originalPlugin.apply(this,arguments); 

    $('body').my_plugin(); 

})(); 

답변

0

이와 비슷한 것을받을 수 있습니까?

<script type="text/javascript"> 
    //This is simplified skeleton of infinatescroll plugin. 
    (function ($) 
    { 

     var defaults = { 
      prop: 'name' 
     }; 

     var methods = { 
      init: function (params) 
      { 
       //Some code 
       return this; 
      }, 
      retrive: function() 
      { 
       console.log('Inside Plugin'); 
       return this; 
      } 
     }; 

     $.fn.getObj = function(){ 
      return methods; 
     }; 

     $.fn.my_plugin = function() 
     { 
      //Some code 
      return methods.retrive.apply(this, arguments); 
     }; 


    })(jQuery); 

    $(document).ready(function(){ 
     var originalPlugin=$.fn.my_plugin; 
     console.log($.fn.getObj()); 
     $.fn.getObj().retrive = function(){ 
      console.log("look I am changed"); 
     } 


     $('body').my_plugin(); 
    }); 
</script> 
관련 문제