Override jQuery functions

后端 未结 2 682
悲哀的现实
悲哀的现实 2020-11-28 10:23

Is there way to override jQuery\'s core functions ? Say I wanted to add an alert(this.length) in size: function() Instead of adding it in the source

size: f         


        
相关标签:
2条回答
  • 2020-11-28 11:03

    You almost had it, you need to set the this reference inside of the old size function to be the this reference in the override function, like this:

    var oSize = jQuery.fn.size;
    jQuery.fn.size = function() {
        alert(this.length);
    
        // Now go back to jQuery's original size()
        return oSize.apply(this, arguments);
    };
    

    The way this works is Function instances have a method called apply, whose purpose is to arbitrarily override the inner this reference inside of the function's body.

    So, as an example:

    var f = function() { console.log(this); }
    f.apply("Hello World", null); //prints "Hello World" to the console
    
    0 讨论(0)
  • 2020-11-28 11:22

    You can override plugins method by prototype it in a separate file without modifying original source file as below::

    (function ($) {
        $.ui.draggable.prototype._mouseDrag = function(event, noPropagation) {
    
             // Your Code
        },
    
        $.ui.resizable.prototype._mouseDrag = function(event) {
                // Your code
        }   
    }(jQuery));
    

    Now put your logic here or original code with your new idea that is needed in your project.

    0 讨论(0)
提交回复
热议问题