如果想重写jQuery某个方法又不想直接改源码,你可以这样
改写unique()
(function($){ var _old = $.unique;//备份原始方法 $.unique = function(arr){ //如果是dom对象就使用原始方法 if (!!arr[0].nodeType){ return _old.apply(this,arguments); } else { //使用grep/inArray组合方法去重 return $.grep(arr,function(v,k){ return $.inArray(v,arr) === k; }); }};})(jQuery); //test var arr = ['first',7,true,2,7,true,'last','last']; $.unique(arr); // ["first", 7, true, 2, "last"]var arr = [1,2,3,4,5,4,3,2,1]; $.unique(arr); // [1, 2, 3, 4, 5]
方法改写的模式:
(function($){ // store original reference to the method var _old = $.fn.method; $.fn.method = function(arg1,arg2){ if ( ... condition ... ) { return .... } else { // do the default return _old.apply(this,arguments); } };})(jQuery);