javascript - 覆盖 jQuery 的 .load 函数

标签 javascript jquery overriding

我的网站在 300 多页中使用了 $(selector).load(path) 函数。现在我客户的需求变了,我需要跨域访问才能调用这些页面。

为此,我必须在 YQL 的帮助下将所有 .load( 函数替换为一些跨域函数。

是否可以覆盖我的 .load 函数并调用阻止默认值并执行我自己的代码?

最佳答案

没有干净的方法来做到这一点,特别是因为 $.fn.load 根据参数做不同的事情,替换它会影响所有这些子函数。

但是,jQuery supports AJAX hooks你可能能够实现你想要的。

如果您只需要支持 IE 的 XDomainRequest,请查看此插件:https://github.com/jaubourg/ajaxHooks/blob/master/src/ajax/xdr.js


无论如何,如果你真的想替换 jQuery 的 ajax 加载功能,这段代码应该做到:

var _load = $.fn.load;
$.fn.load = function(url, params, callback) {
    if(typeof url !== "string") {
        return _load.apply(this, arguments);
    }

    // do your ajax stuff here
}

这与 jQuery 用来决定某人是否要绑定(bind) onload 事件或执行 AJAX 加载的检查完全相同。

关于javascript - 覆盖 jQuery 的 .load 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153827/

相关文章:

ios - 重写方法未被调用

javascript - Codecademy Javascript 类(class)构建地址簿 3/6

javascript - 使用 jQuery 在 javaScript 中维护函数执行的顺序

javascript - 如何将当前登录用户选择为我选择的选项值

jquery - 悬停时仅显示表格一行的隐藏元素

java - 在同一页面中的何处存储选定的元素值?

java - 覆盖等于检查类类型或原始 int

javascript - 使用 AngularJS 的 Windows Phone 8.1 上的 Phonegap 无法从我的 API 检索 JSONP

javascript - JQuery 仅切换 1 个项目,其他项目未单击

class - 更改媒体时如何用另一个 CSS 类替换 CSS 类