jQuery Collection

联合创作 · 2023-10-02 15:33

This plugin generates generic collection classes, that work almost exactly as jQuery does.
These collections include all those jQuery functions, that are used to manipulate the collection itself.

The included built-in functions are:

add, andSelf, attr, each, end, eq, extend, filter, get, implement, include, index, init, is, map, not, pushStack, setArray, size and slice.


Every collection will have a build() function, that will create a new collection class, that inherits from the caller. $.collection is a collection class by itself. So other collections will inherit from it, or its subclasses.

With this plugin, you can manipulate native data types like String or Array, with your custom methods, without actually modifying their prototype. This is shown in some of the examples below.

If you want additional information and more details about some of the methods.
Check this explanatory text, also included in the release.

Examples

$.collection(1,2,3,4).filter([2,3]).eq(1);//--> [ 3 ]


$.number = $.collection.build();
$.number.fn.sum = function(){
    var n = 0;
    this.each(function(){ n += this; });
    return n;
};
$.number(1,2,3,4).add(5).not(function(){
    return this <= 2;
}).sum();//yields --> 12 ( 3 + 4 + 5 )


$.array = $.collection.build();
$.array.fn.include( Array.prototype, &#039;join,push&#039; );
var $arr = $.array(&#039;I&#039;,&#039;like&#039;,&#039;xyz&#039;,&#039;jQuery&#039;).add(&#039;very&#039;).not(&#039;xyz&#039;);
$arr.push( &#039;much&#039; );
$arr.join(&#039; &#039;);// yields --> &#039;I like jQuery very much&#039;


var Nodes = $.collection.build();
Nodes.fn.init = function( elems ){
    elems = document.getElementsByTagName(elems);
    return this.setArray( $.makeArray(elems) );
};
Nodes(&#039;body&#039;).add(&#039;script&#039;).attr(&#039;className&#039;,&#039;node&#039;);//-->[ <body>, <script>, <script> ]


var MyString = $.collection.build();
MyString.implement( String.prototype, &#039;replace,toUpperCase&#039;);
MyString(&#039;jQuery&#039;,&#039;Quack&#039;).replace(&#039;Q&#039;,&#039;X&#039;).toUpperCase()// --> [ &#039;JXUERY&#039;, &#039;XUACK&#039; ]

Please, make sure to upgrade to 1.0.3
The plugin is very easy to master and is relatively small, less than 2KB packed

浏览 10
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐