您的位置:知识库 » Web前端

从零开始学习jQuery (九) jQuery工具函数

作者: ziqiu.zhang  来源: 博客园  发布时间: 2009-05-19 10:16  阅读: 15620 次  推荐: 1   原文链接   [收藏]  
摘要:我们经常要使用脚本处理各种业务逻辑, 最常见的就是数组和对象的操作, jQuery工具函数为我们操作对象和数组提供了便利条件。
[1] 从零开始学习jQuery (九) jQuery工具函数
[2] 从零开始学习jQuery (九) jQuery工具函数
[3] 从零开始学习jQuery (九) jQuery工具函数
[4] 从零开始学习jQuery (九) jQuery工具函数
[5] 从零开始学习jQuery (九) jQuery工具函数

系列文章导航:

从零开始学习jQuery (一) 开天辟地入门篇

从零开始学习jQuery (二) 万能的选择器

从零开始学习jQuery (三) 管理jQuery包装集

从零开始学习jQuery (四) 使用jQuery操作元素的属性与样式

从零开始学习jQuery (五) 事件与事件对象

从零开始学习jQuery (六) AJAX快餐

从零开始学习jQuery (七) jQuery动画-让页面动起来!

从零开始学习jQuery (九) jQuery工具函数

从零开始学习jQuery (十) jQueryUI常用功能实战

从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件


3.转换

jQuery.map( array, callback )

返回值:Array

说明:

将一个数组中的元素转换到另一个数组中。

作为参数的转换函数会为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组,并扩展至原始数组中。

讲解:

1.3.2版本中此函数和each函数已经几乎相同(以前稍有不同),  现在唯一的区别就是回调函数可以改变当前元素.返回null则删除当前元素.

下面是几个例子:

 

Code
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(", "));

4.合并

合并对象是我们常常编写的功能, 通常使用臃肿的for循环来进行.jQuery为我们提供了很多功能的合并函数:

名称 说明 举例
jQuery.extend( [deep], target, object1, [objectN] )

用一个或多个其他对象来扩展一个对象,返回被扩展的对象。

如果不指定target,则给jQuery命名空间本身进行扩展。这有助于插件作者为jQuery增加新方法。

如果第一个参数设置为true,则jQuery返回一个深层次的副本,递归地复制找到的任何对象。否则的话,副本会与原对象共享结构。

为定义的属性将不会被复制,然而从对象的原型继承的属性将会被复制。

合并 settings 和 options,修改并返回 settings:
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.makeArray( obj )

将类数组对象转换为数组对象。

类数组对象有 length 属性,其成员索引为 0 至 length - 1。实际中此函数在 jQuery 中将自动使用而无需特意转换。

将DOM对象集合转换为数组:
var arr = jQuery.makeArray(document.getElementsByTagName("div"));
jQuery.inArray( value, array ) 确定第一个参数在数组中的位置,从0开始计数(如果没有找到则返回 -1 )。 查看对应元素的位置:
var arr = [ 4, "Pete", 8, "John" ];
jQuery.inArray("John", arr); //3
jQuery.inArray(4, arr); //0
jQuery.inArray("David", arr); //-1
jQuery.merge( first, second )

合并两个数组

返回的结果会修改第一个数组的内容——第一个数组的元素后面跟着第二个数组的元素。要去除重复项,请使用$.unique()

合并两个数组到第一个数组上:
$.merge( [0,1,2], [2,3,4] )

结果:
[0,1,2,2,3,4]
jQuery.unique( array ) 删除数组中重复元素。只处理删除DOM元素数组,而不能处理字符串或者数字数组。 删除重复 div 标签:
$.unique(document.getElementsByTagName("div"));

[
,
, ...]


讲解:

上面的函数看着有些混乱.  看看我们以后会常用的.

首先是jQuery.merge( first, second ), 将两个数组合并. 下面这个示例说明如何使用此函数:

 

Code
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery Utilities - jQuery.merge</title>

<script src="../scripts/jquery-1.3.2-vsdoc2.js" type="text/javascript"></script>

<script type="text/javascript">
$(
function()
{
$(
"#go").click(function(event)
{
$(
"#divResult").html("");
var first = [1, 3, 5];
$(
"#divResult").append("<span>first:[" + first.join(",") + "]</span>").append("<br/>");
var second = [2, 4, 6];
$(
"#divResult").append("<span>second:[" + second.join(",") + "]</span>").append("<br/>");
var result = $.merge(first, second);
$(
"#divResult").append("<span>result:[" + result.join(",") + "]</span>").append("<br/>");
$(
"#divResult").append("<span>first after merged:[" + first.join(",") + "]</span><br/>");
$(
"#divResult").append("<span>second after merged:[" + second.join(",") + "]</span><br/>");

});
});

</script>

</head>
<body>
<button id="go">
合并数组
</button>
<br />
<div id="divResult">
</div>
</body>
</html>

结果如图:

另外不能因为有了jQuery就忘记我们的原始javascript. 比merge更常用的其实是join和split函数.

      merge函数会改变第一个合并的数组, 如果是我设计我就不会这么做. 因为返回值已经是合并后的数组了.如此设计让函数产生歧义.

      列表中的那么多函数不再一一讲解. 先用先查. 除了 jQuery.extend 这个不得不提的函数. 下面单提一个小结讲解。

1
0

Web前端热门文章

    Web前端最新文章

      最新新闻

        热门新闻