我去过这个帖子但没有找到答案。 How to create a Wrapper
我的问题是如何为jquery函数创建一个包装器,如jquery ajax以及它是如何工作的。
如果有人可以提供一个小提琴或一个非常简单的例子来包装jquery ajax,我将不胜感激。
谢谢。
答案 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功能,这些功能对于横切关注点非常有用。