JQuery插件开发(一)

JQuery插件开发(一): 
最近项目中需要自定义一些数据报表,jquery的datagrid并不能完全满足系统需求,真正是一个头两个大。所以潜下心来研究如何开发插件。 
jQuery插件的开发包括两种:一种是公用函数的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法。jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,相当于在JQuery下面扩展一个类。 
1,函数级别的开发 
1.1 添加一个新的全局函数 
咱们从最经典的程序员书法说起: 
jQuery.helloworld = function() {   
alert('Hello World');   
};   
1.2 使用jQuery.extend(object) 
jQuery.extend({       
helloworld: function() {       
alert('This is a test. This is only a test.');       
},       
helloworld1: function(param) {       
alert(param + ':你好.');       
}     
});   
调用时和一个函数的一样的:jQuery.helloworld();jQuery.helloworld1('小明');或者$.helloworld();$.helloworld1('小明');   
1.3 使用命名空间 
jQuery.myPlugins = {           
helloworld:function() {           
alert('Hello World');           
},           
helloworld1:function(param) {           
alert(param + ':你好.');     
}         
};   
采用命名空间的函数仍然是全局函数,调用时采用的方法:   
$.myPlugins.helloworld();         
$.myPlugins.helloworld1('baz');   
了解了一些基础知识后,咱们来开发一个实例。 
基于jquery来开发数组的分组(group by)功能,说句题外话,分组这个功能完全可以在代码中实现(linq): 
主要思想是根据数组对象和任意的属性名称(单属性,后期如有需要的话,考虑扩展成多属性分组) 
jQuery.myPlugins = {       
 function GroupBy(object, property) { 
        if (!object || object.length < 1) { 
            return; 
        } 
        var listRes = new Array(); 

        $.each(object, function (i, n) { 
            if (jQuery.inArray(n[property], listCount) < 0) { 
                listCount.push(n[property]); 
            } 
        }); 
        if (listCount.length > 0) { 
            $.each(listCount, function (i, n) { 
                var _childList = {}; 
                _childList["GroupBy"] = n; 
                _childList["GroupInfo"] = $.grep(object, function (gn, gi) { 
                    if (gn[property] == n) { 
                        return gn; 
                    } 
                }); 

                listRes.push(_childList); 
            }); 
        } 
        return listRes; 
    } 
};

posted @ 2015-04-20 19:43  慢慢疼联军  阅读(188)  评论(0)    收藏  举报