jquery utilities

utilities有些特别, 并不是jquery对象的方法, 需要用jQuery.的方式调用,有些像静态方法。因此很容易想到那些xxUtil的静态方法工具类。

jQuery.each( object, callback )
首先这种方式跟$().each() 不同, $().each()只能对jquery对象进行迭代,而jQuery.each()可以对anything
object指定迭代的对象, callback指定handler;如果callback中返回false,将打断循环。
看一个例子:

var arr = [ "one", "two", "three", "four", "five" ];
var obj = { one:1, two:2, three:3, four:4, five:5 };

jQuery.each(arr, function(i, val) {
alert(i); //it's the index
alert(this); alert(val);
return (this != "four"); // will stop running to skip "five"
});

jQuery.each(obj, function(i, val) {
alert("key is "+i);
alert("val is "+val);
});

通过例子,可以看出callback可以有两个参数: index, val
对于数组的遍历很容易理解, 如果是一个hash对象,那么index代表key。
而且这两个参数是可以不写的, this等价于val, 没有写val参数的时候,可以用this获取它的值。

jQuery.extend( target, object1, objectN )
用object1...objectN对target对象进行扩展, 相同属性将被覆盖。

var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar" };
jQuery.extend(settings, options);

settings将会变成{validate:true, limit:5, name:"bar"}

jQuery.grep( array, callback, invert )
可以用来塞选一组对象, callback决定是否保留对象

function callback(elementOfArray, indexInArray) {
var shouldKeepIt;

this; // unmapped

return shouldKeepIt;
}

可以看出, index的位置跟each不同, 跑到了第二个参数的位置。
默认情况下, 当callback 返回true则保留对象,否则去掉
invert=false, 跟默认情况一致,callback返回true则保留
invert=true,则跟默认相反,callback返回true则去掉

jQuery.makeArray( obj )
将dom的element数组转成jquery的数组,例如:

var arr = jQuery.makeArray(document.getElementsByTagName("div"));
arr.reverse(); // use an Array method on list of dom elements
$(arr).appendTo(document.body);

以上实现了div数组倒置,通过makeArray之后得到jquery数组对象,通过jquery对象的方法,很方便进行倒置,轻松添加到body。

jQuery.map( array, callback ) Returns: Array
不是将数组转换map,而是将数组转换成另外一种形式, callback指定了转换方式,例如:

var arr = [ "a", "b", "c", "d", "e" ]
$("div").text(arr.join(", "));

arr = jQuery.map(arr, function(n, i){
return (n.toUpperCase() + i);
});
$("p").text(arr.join(", "));

arr = jQuery.map(arr, function (a) { return a + a; });
$("span").text(arr.join(", "));

以上两次map,arr得到如下数组
A0, B1, C2, D3, E4
A0A0, B1B1, C2C2, D3D3, E4E4
两次map,callback的写法有不同
1)两个参数,分别是数组中一个元素的值和index
2)一个参数, 数组中一个元素的值。

jQuery.inArray( value, array ) Returns: Number
返回value在array中的index,如果不存在则返回-1

jQuery.unique( array ) Returns: Array
去掉array重复元素, 并返回去掉重复元素之后的array

jQuery.isFunction( obj )
检查obj是否是一个function,例如:

function stub() {
}
var objs = [
function () {},
{ x:15, y:20 },
null,
stub,
"function"
];

jQuery.each(objs, function (i) {
var isFunc = jQuery.isFunction(objs[i]);
$("span:eq( " + i + ")").text(isFunc);
});


jQuery.trim( str )
去掉string首尾的空格
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页