2016-10-02 12 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); 

以下のように 'retrive'メソッドをオーバーライドしようとしていますが、機能しません。

(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> 
関連する問題