我在jqgrid(jquery网格)中使用以下函数闭包来保留在名为' retainChanges'的变量中进行分页时的编辑更改 - 这看起来不错;我打破了javascript中的任何好习惯; 代码工作正常只是想确保我不介绍将来可能破坏的功能
(function($){
var retainedChanges;
retainedChanges = new Array();
$.retainChangesOnPaging = function(){
var changedCells = $('#grid').jqGrid('getChangedCells');
// loop over changedCells array, removing duplicates if you want to...
return retainedChanges.push(/* this is inside the loop; push current value to array*/);
....
}
$.getRetainedChanges = function(){
return retainedChanges;
}
})(jQuery);
答案 0 :(得分:2)
这很好用,虽然你应该接受jQuery作为参数:
(function($){
这样,即使$
符号用于闭包之外的其他内容,它也不会影响闭包内的代码。
另外两件事:
1)您应该声明并将变量分配到一起,并使用[]
代替new Array()
。
2)您在此处缺少$
符号:('#grid')
。
有关完整的纲要,请查看以下内容:
(function($){
var retainedChanges = [];
$.retainChangesOnPaging = function(){
var changedCells = $('#grid').jqGrid('getChangedCells');
// loop over changedCells array, removing duplicates if you want to...
return retainedChanges.push(/* this is inside the loop; push current value to array*/);
....
}
$.getRetainedChanges = function(){
return retainedChanges;
}
})(jQuery);
答案 1 :(得分:0)
您正在将jQuery
传递给没有参数的函数,并且从不使用传入的jQuery对象。您可能意味着:
(function($){
除此之外它看起来很好。
答案 2 :(得分:0)
您可以改进几件事:
1)您将jQuery
传递给该函数,但不要使用它(如果已定义,则使用全局对象$
)。将代码修改为接受一个名为$
的参数:
(function($){
2)您可以缩短retainedChanges
声明:
var retainedChanges = new Array();
3)如果您正在尝试编写jQuery插件,请按照以下教程进行操作:jQuery: Plugins/Authoring
如果没有,那么可能使用与jQuery
不同的全局对象?