有时候写js的时候,会发现有很多相同方法,那另外的js文件也要用到这个方法的时候,第一想法就是把那个方法copy到另外的js里面去,这样就会多出很多这个方法, 会显得代码很多很沉重而导致js加载的时候,会慢很多,那有没有办法像java那样自己封装成一个工具类,那里需要用到这个方法,就直接导入调用就行了呢??答案是有的,jquery有一个扩展的函数,就是$.extend({});,这个方法可以把一些常用的方法写进去,供调用使用,下面是例子,本人也是一个新人,每天都在给那些技术牛的大牛虐待,希望平时转载的文章和原创的文章可以帮广大的新人。。。。。。
<pre name="code" class="javascript">$.extend({
transfer : {
/**
* 移动数据
* @param left
* @param right
*/
transferData: function(left, right) {
var leftmObj = $('#' + left);
var rightObj = $('#' + right);
var rows = leftmObj.datagrid('getSelections');//左边datagid选中的行
//先要判断,是否为已选学生
var rowsSelected = rightObj.datagrid('getSelections');
var rowsLength = rightObj.datagrid('getRows');
if (rowsLength.length == 0) {
for (var m = 0; m <= rows.length - 1; m++) {
rightObj.datagrid("appendRow", rows[m]);
rightObj.propertygrid('acceptChanges');
}
}
else {
var flag = true;//不相等
for (var i = 0; i <= rows.length - 1; i++) {//未选择
for (var j = 0; j <= rowsLength.length - 1; j++) {//已选择
if (rows[i].id == rowsLength[j].id) {
flag = false;//相等
break;
}
else {
flag = true;
}
}//j End
if (flag == true) {
rightObj.datagrid("appendRow", rows[i]);
rightObj.propertygrid('acceptChanges');
}
}//iend
}
},
/**
* 清空左边选择的门店datagrid数据
* @param dg
*/
cleanLeftData: function(dg) {
if($.fast.isNotEmpty(dg)){
var item = $(dg).datagrid('getSelections');
if ($.fast.isNotEmpty(item)) {
for (var i = item.length - 1; i >= 0; i--) {
var index = $(dg).datagrid('getRowIndex', item[i]);
$(dg).datagrid('deleteRow', index);
}
}
}
},
/**
* 存储数据
* @param json
* @param right
*/
arrayStorager: function(json, right) {
var array = $(json).val();
if($.fast.isNotEmpty(array)) {
var array = $.parseJSON(array);
for (var i = 0; i <= array.length - 1; i++) {
var id = array[i].id;
if($.fast.isNotEmpty(id)){
$(right).datagrid("appendRow", array[i]);
}
}
}
}
}
});上面的是jquery的扩展方法,只要调用的时候,传参和传对象过去就行了.........
下面就调用方法
<script type="text/javascript">
$(function(){
$.transfer.arrayStorager($("#bindAdminJson"), $("#been_elected_list")); ------------------》这是调用的方法
});
//移动门店数据
function transferDataMethod(all_admin_list, been_elected_list) {
$.transfer.transferData(all_admin_list, been_elected_list);
}
//清空右边选择的门店datagrid数据
function cleanSelectData() {
$.transfer.cleanLeftData($('#been_elected_list')); ------------------》这是调用的方法
}
</script>
本文介绍了一种通过jQuery的$.extend()方法封装通用功能的方式,以此减少代码冗余并提高加载效率。作者通过实例展示了如何创建和调用这些扩展方法。

1万+

被折叠的 条评论
为什么被折叠?



