我想调整jquery对象的范围,这样我就可以覆盖范围内的已添加函数,而无需更改其他地方仍在使用的函数。
以下是我要做的事情的一个示例,但它没有按预期工作。有人可以帮忙吗?
$.fn.method = function(){
alert("old method");
}
(function ($) {
//I want to scope functions to jquery in here
$.fn.method = function(){
alert("new Method")
}
$("#MyId").method(); //should alert NEW method | WORKS CORRECTLY!
})(jQuery)
$("#MyId").method(); //should alert OLD method | DOES NOT WORK CORRECTLY
答案 0 :(得分:0)
是的,只需将所有内容复制到新的对象中即可:
{
const fakeJquery = (...args) => jQuery(...args);
Object.assign(fakeJquery, jQuery);
fakeJquery.fn = {};
(function ($) {
$.fn.method = function(){
alert("new Method")
}
$("#MyId").method();
})(fakeJquery)
}
答案 1 :(得分:0)
一种方法是将方法保存在变量中,并在完成后使用“新方法”将其恢复
$.fn.method = function(){
alert("old method");
};
(function ($) {
//save method we are about to over write
var x = $.fn.method;
$.fn.method = function(){
alert("new Method");
};
$("#MyId").method(); //should alert NEW method | WORKS CORRECTLY!
//Restore method we over wrote
$.fn.method = x;
})(jQuery);
$("#MyId").method(); //now alerts OLD method | WORKS CORRECTLY