如何为jquery创建一个包装器?

时间:2013-09-18 00:48:11

标签: javascript jquery ajax

我去过这个帖子但没有找到答案。 How to create a Wrapper

我的问题是如何为jquery函数创建一个包装器,如jquery ajax以及它是如何工作的。

如果有人可以提供一个小提琴或一个非常简单的例子来包装jquery ajax,我将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:0)

如果您经常执行相同的操作来修改现有方法,则包装器非常有用。假设您经常使用$.get,但每次都必须为数据添加一个密钥。写一个包装器。

$.fn.extend({betterget: function(url, data, success, dataType) {
    data['key'] = 'foo';
    $.get(url, data, success, dataType);
}});

因此,您可以将来自$.get(...)的来电更改为$.betterget(...),并且始终会设置该热门密钥。

这就是它的全部内容。休息取决于你的想象力和需求。

修改

“我可以使用普通的javascript而不是jquery代码创建一个包装器吗?”

不确定

function betterget(url, data, success, dataType) {
    data['key'] = 'foo';
    $.get(url, data, success, dataType);
}

这使您可以调用betterget,它将为您执行jquery工作。

答案 1 :(得分:0)

  

我可以使用普通的javascript而不是jquery代码创建一个包装器吗?   感谢答案配偶,它有很多帮助

喜欢这个吗?

var ajax = (function ($) {
    return function () {
        return $.ajax.apply($, arguments);
    };
})(jQuery);

如果没有真正理解为什么要创建包装以及您希望从包装中获得什么,这个问题无法真正解答?

上面的ajax 包装只是一个将其工作委托给$.ajax的函数。基本上它现在与执行var ajax = $.ajax;几乎相同,唯一的区别是this值在调用$时将正确绑定到$.ajax

包装器可以是很多东西,但大部分时间它都是adapter,它基本上是一个为不兼容对象提供统一接口的对象。

$.ajax本身就是这种模式的完美示例,因为它处理跨浏览器问题,例如不支持标准XMLHttpRequest对象的浏览器。

您还可以使用包装器来模仿AOP功能,这些功能对于横切关注点非常有用。