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 AutoScroller 函数类
May 29 Javascript
基于jQuery的为attr添加id title等效果的实现代码
Apr 20 Javascript
单击复制文字兼容各浏览器的完美解决方案
Jul 04 Javascript
jQuery中odd选择器的定义和用法
Dec 23 Javascript
JS区分浏览器页面是刷新还是关闭
Apr 17 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
Apr 16 Javascript
javascript验证内容为数字以及长度为10的简单实例
Aug 20 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
Nov 29 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
Aug 31 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 Javascript
vue界面发送表情的实现代码
Sep 11 Javascript
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
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
javascript 节点排序 2
2011/01/31 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
DOM基础教程之使用DOM
2015/01/19 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
微信小程序 devtool隐藏的秘密
2017/01/21 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
js实现动态改变radio状态的方法
2018/02/28 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
python插入数据到列表的方法
2015/04/30 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
python读取oracle函数返回值
2016/07/18 Python
Python2随机数列生成器简单实例
2017/09/04 Python
详解python中docx库的安装过程
2019/11/08 Python
Python动态强类型解释型语言原理解析
2020/03/25 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
自我鉴定书
2014/03/24 职场文书
节约用水倡议书
2014/04/16 职场文书
质量月活动总结
2014/08/26 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
2016简单的租房合同范本
2016/03/18 职场文书
查看nginx配置文件路径和资源文件路径的方法
2021/03/31 Servers
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
Python Matplotlib绘制动画的代码详解
2022/05/30 Python