jQuery 第二课 操作包装集元素代码


Posted in Javascript onMarch 14, 2010

例如:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>jQuery Wrapper</title> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
$(function() { 
$("<p>I am a red line.</p>").css("color", "Red").appendTo("#foo"); 
}); 
</script> 
</head> 
<body> 
<div id="foo"> 
</div> 
</body> 
</html>

$创造了一个p元素的包装元素,这个包装元素和用上文提到的选择符选到的元素是一样的。同样也可以调用jQuery的一些方法,最后用appendTo(以后介绍)把这个元素移动到div里。最终结果是:

jQuery 第二课 操作包装集元素代码

下面介绍对包装集操作的函数。

1. html(),html(text). 第一个函数返回包装集第一个元素内部的html,第二个函数将包装集中的所有元素的内部html设置为text。

2.size()。返回包装集包含的元素。

3.get(),get(n)。第一个函数将包装集合内的HTML元素以javascript数组的形式返回,第二个元素返回第n个HTML元素。

4.index(elem). 返回传入的HTML元素elem在包装集中的位置。如果不在包装集中,则返回-1。

5.add(s),add(elem),add(array). add函数用于向包装集中添加元素。如果是选择器,则添加所有被选中的元素,如果是HTML片段,则根据此片段创建HTML元素并添加此元素;如果是HTML元素或者HTML元素的数组,则直接添加。

6. not(expression),filter(expression). 这两个函数是用来筛选包装集的元素的。expression可以是一个字符串(选择符),或者是html元素或者元素数组。not函数除去符合选择符的元素或者包含在数组中的元素。filter则相反,留下符合选择符的元素或者包含在数组中的元素。

7.slice(begin,end) 这个函数返回的是一个新建的包装集,内容是原包装集从第begin到第end个元素。end省略则表示最大长度。

先来看几个例子。

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>jQuery Wrapper</title> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
$(function() { 
$('span').html($('li').size()); 
$('li').not('li:first').add('p:first').css('color', 'Red'); 
$('li').get(0).innerHTML = "First Special Item"; 
$('p:last').html($('li').html()); 
}); 
</script> 
</head> 
<body> 
<ul> 
<li>First Item</li> 
<li>Second Item</li> 
<li>Third Item</li> 
<li>Forth Item</li> 
<li>Fifth Item</li> 
</ul> 
<p>I am a lonely p.</p> 
<p>The UL has <span></span> elements.</p> 
<span>Hello jQuery.</span> 
<p></p> 
</body> 
</html>

第一行演示了html和size的用法。按上面的介绍,两个span中的内容都应该会变成5. 第二行演示了not和add的一个用法。最终后四个li和第一个p会变成红色。第三行演示了get的用法,一旦调用get之后,返回值就不是包装元素而是HTML元素,因此可以使用HTML DOM提供的方法设置innerHTML。最后一行还是演示html()的用法,要注意html()返回的是第一个元素的内部内容,但是html(text)会把所有元素的内容都设置成text。 最终的结果如下:

jQuery 第二课 操作包装集元素代码

9. 这是一大类非常有用的函数,可以根据位置关系筛选元素。

children() 返回包装集内元素的子元素(儿子元素,往下多层的不算)
contents() 返回包装集的内容的包装集,可能有文本节点(这个包装集有些特殊,下面介绍)
next() 包装集元素中不重复的下一个元素。
nextAll() 包装集元素中所有的下一个元素。
parent() 包装集中元素不重复的父元素的包装集
parents() 同上,但是一直向上追溯到文档根元素(不包括根元素)
prev() 类似next(),所有不重复的前一个元素
prevAll() 类型nextAll(),所有前一个元素
siblings() 包装集中所有不重复的兄弟元素。

先看前两个函数的区别,HTML代码还是用上一个例子的,js脚本如下:

$(function() { 
var ul = $('ul:first'); 
$('p span').html(ul.children().size()); 
var content = ul.contents(); 
alert(content.size()); 
});

children()返回的包装集的数量是6,说明最后一个嵌套的<ul>仅算作一个元素。但是contents()返回的包装集的数量多达13。利用调试器查看一下它的内容:
jQuery 第二课 操作包装集元素代码
它和children的区别就是包含了大量的Text节点,包括仅仅是一个空行的文本节点。

再看next和nextAll方法,仍然使用上面的HTML的代码,js脚步如下:

$(function() { 
$('span:last').html($('ul').next().html()); 
$('p:last').html($('ul').nextAll().size()); 
});ul的下个元素应该是I am a lonely p.所有 下个元素共有4个。故结果为:

jQuery 第二课 操作包装集元素代码 
其他函数使用类似,不再举例。
10.find
find方法和filter方法很容易混淆,同样也是传入一个选择符筛选包装集中的元素。不过find筛选的是包装集内元素的子元素,filter是筛选的包装集内的元素。下面会举一个例子。
11 clone
clone方法返回一个包装集的副本。
例子:
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>jQuery Wrapper</title> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
$(function() { 
$('body').children().filter('p:first').css('color', 'Red').appendTo('#container'); 
$('body').children().find('p').css('color', 'Green').appendTo('#container'); 
$('p:last').clone().css('color', 'Red').appendTo('body'); 
}); 
</script> 
</head> 
<body> 
<p>I am a lonely p.</p> 
<div>The UL has <p>Inner P</p> elements.</div> 
<p>Hello jQuery.</p> 
<div id='container'></div> 
</body> 
</html>

这是一个比较有意思的例子。第一行筛选出第一个p并且设为红色,再移动到最后的一个div中。第二行筛选出包含在包装集中的p,设为绿色,移动到最后一个div中,注意这里,此时这句筛选到的p有两个,一个是Inner P,还有一个是被第一句移动到最后的div中的 I am a lonely p.再把这两个元素添加到最后的div中,由于InnerP本身就在这个div中,所以相当于没有移动。最后,把最后一个p复制一份,设置为红色,添加到body最后。因此,最终的页面和色彩如下:
jQuery 第二课 操作包装集元素代码 
最后介绍连缀链的管理。所谓连缀链,上面的例子也有体现,就是每调用一个jQuery方法它都返回一个包装集,这个包装集作为下一个方法的调用者,构成一个链。在这个过程中有可能会产生新的包装集(比如调用clone())方法。在一个连缀链中,如果调用end方法,则返回上一个包装集,如果调用andSelf方法则把当前和上一个包装集合并成一个包装集并返回。可以想到,jQuery内部把这些连缀的包装集存在一个堆栈中。下面的简单例子展示上述原理:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>jQuery Wrapper</title> 
<script type="text/javascript" src="jquery-1.3.2.js"></script> 
<script type="text/javascript"> 
$(function() { 
$('div:eq(0)').find('p:lt(2)').css('color', 'red'); 
$('div:eq(1)').find('p:lt(2)').end().css('color', 'blue'); 
$('div:eq(2)').find('p:last').prev().andSelf().css('color', 'Green'); 
}); 
</script> 
</head> 
<body> 
<div> 
<p>div1 p1</p> 
<p>div1 p2</p> 
<p>div1 p3</p> 
</div> 
<div> 
<p>div2 p1</p> 
<p>div2 p2</p> 
<p>div2 p3</p> 
</div> 
<div> 
<p>div3 p1</p> 
<p>div3 p2</p> 
<p>div3 p3</p> 
</div> 
</body> 
</html>

jQuery 第二课 操作包装集元素代码
Javascript 相关文章推荐
JavaScript加密解密7种方法总结分析
Oct 07 Javascript
JavaScript 继承详解(一)
Jul 13 Javascript
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 Javascript
html超链接打开窗口大小的方法
Mar 05 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
Aug 25 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
微信小程序loading组件显示载入动画用法示例【附源码下载】
Dec 09 Javascript
Vue中的scoped实现原理及穿透方法
May 15 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
Aug 13 Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 Javascript
深入分析jQuery.one() 函数
Jun 03 jQuery
jQuery入门第一课 jQuery选择符
Mar 14 #Javascript
使用JavaScript switch case 另类写法
Mar 14 #Javascript
两个JavaScript jsFiddle JSBin在线调试器
Mar 14 #Javascript
input的focus方法使用
Mar 13 #Javascript
JavaScript prototype对象的属性说明
Mar 13 #Javascript
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
Mar 12 #Javascript
JS在IE和FireFox之间常用函数的区别小结
Mar 12 #Javascript
You might like
屏蔽浏览器缓存另类方法
2006/10/09 PHP
php判断邮箱地址是否存在的方法
2016/02/13 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
Laravel下生成验证码的类
2017/11/15 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
2015/09/22 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
基于node.js依赖express解析post请求四种数据格式
2017/02/13 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
下载给定网页上图片的方法
2014/02/18 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
详解Django通用视图中的函数包装
2015/07/21 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
Python实现读取并保存文件的类
2017/05/11 Python
对Python中画图时候的线类型详解
2019/07/07 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
HTML5 canvas实现雪花飘落特效
2016/03/08 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
2014机关党员干部“正风肃纪”思想汇报
2014/09/15 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
特此通知格式
2015/04/27 职场文书
师德承诺书2015
2015/04/28 职场文书
酒会开场白大全
2015/06/01 职场文书
商务宴会祝酒词
2015/08/11 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
win11无法添加打印机怎么办? 提示windows无法打开添加打印机的解决办法
2022/04/05 数码科技