覆盖jquery .load()函数 - 处理回调

时间:2012-06-27 08:08:27

标签: javascript jquery override

我重载了jQuery的.load()函数以满足我的CrossDomain要求。

(function ($) { 
    var _load = $.fn.load; 
    $.fn.load = function(url, params, callback) { 
        if (url.match('^http')) { 
            $(this).load("read_page.php?p="+url);
            return this;
        }
        else{
            return _load.apply(this, arguments); 
        }
    }
})(jQuery);

“read_page.php”调用PHP curl从跨域获取页面。

调用上述覆盖函数的代码部分是:

$(trg).load(user_folder+shw+qs, function(){
                        showErr("Updation Successfull", trg);
                        $(".divErr").css("border-color","#4F8A10");
                        $(".divErr").css("background","url(images/img_suc.png) no-repeat 10px 50%, left;");
                        $(".divErr").css("background-color","#DFF2BF");
                    }).html(vLoading);

.html(vLoading)部分正常,因为我的代码返回的值。

功能(){...} 部分无效,因为我的代码无法处理回调

在我的自定义覆盖功能中需要帮助来处理回调

1 个答案:

答案 0 :(得分:0)

试试这个版本:

(function ($) { 
    var _load = $.fn.load; 
    $.fn.load = function(url, params, callback) { 
        if ( url.match('^http') ) {
            var params = params || {},
                callback = callback || function () {};
            _load.call(this, "read_page.php?p="+url, params, callback );
            return this;
        }
        else {
            return _load.apply(this, arguments);
        }
    }
})(jQuery);