[jQuery入门到精通]第3章:管理jQuery包装集xb

一.摘要要在使用jjQueery选选择器获获取到jjQueery包包装集后后, 我我们需要要对其进进行操作作. 本本章首先先讲解如如何动态态的创建建元素,, 接着着学习如如何管理理jQuueryy包装集集, 比比如添加加,删除除,切片片等. 二.前言言本系列的的2,33篇上面面列举了了太多的的APII相信大大家看着着眼晕.. 不过过这些基基础还必必须要讲讲, 基基础要扎扎实.其其实对于于这些列列表大家家可以跳跳过, 等以后后用到时时再回头头看或者者查询官官方的AAPI说说明.本章内容容很少,, 主要要讲解动动态创建建元素和和操作jjQueery包包装集的的各个函函数. 三.动态态创建元元素1.错误误的编程程方法我们经常常使用jjavaascrriptt动态的的创建元元素, 有很多多程序员员通过直直接更改改某一个个容器的的HTMML内容容.比如如:>
您您可以添添加、移移除、改改变或重重排页面面上的项项目要改变页页面的某某个东西西,JaavaSScriipt 就需要要对 HHTMLL 文档档中所有有元素进进行访问问的入口口这个个入口,连连同对 HTMML 元元素进行行添加、移移动、改改变或移移除的方方法和属属性,都都是通过过文档对对象模型型来获得得的(DDOM)在 19998 年,WW3C 发发布了第第一级的的 DOOM 规规范这这个规范范允许访访问和操操作 HHTMLL 页面面中的每每一个单单独的元元素所有的浏浏览器都都执行了了这个标标准,因因此,DDOM 的兼容容性问题题也几乎乎难觅踪踪影了DOM 可被 JavvaSccrippt 用用来读取取、改变变 HTTML、XXHTMML 以以及 XXML 文档DOM 被分为为不同的的部分(核核心、XXML及及HTMML)和和级别(DDOM Levvel 1/22/3)::Coree DOOM 定义了一一套标准准的针对对任何结结构化文文档的对对象XML DOMM定义了一一套标准准的针对对 XMML 文文档的对对象 HTMLL DOOM 定义了一一套标准准的针对对 HTTML 文档的的对象。
关于使用用HTMML DDOM创创建元素素本文不不做详细细介绍,, 下面面举一个个简单的的例子:://使用用Domm标准创创建元素素var sellectt = doccumeent..creeateeEleemennt(""sellectt");; sellectt.opptioons[[0] = neew OOptiion(("加载载项1"", "vvaluue1""); sellectt.opptioons[[1] = nnew Opttionn("加加载项22", "vaaluee2")); sellectt.siize = ""2";;varoobjeect = ttesttDivv.apppenndChhildd(seelecct);;通过使用用 doocummentt.crreatteEllemeent 方法我我们可以以创建DDom元元素, 然后通通过apppenndChhildd方法为为添加到到指定对对象上..(2) 使用jjQueery函函数创建建元素在jQuueryy中创建建对象更更加简单单, 比比如创建建一个DDiv元元素:$("<
保留带有有sellectt类的元元素: $(""p")).fiilteer("".seelecctedd")filtter(( fnn )筛选出与与指定函函数返回回值匹配配的元素素集合这个函数数内部将将对每个个对象计计算一次次 (正正如 ''$.eeachh').. 如果果调用的的函数返返回faalsee则这个个元素被被删除,否否则就会会保留保留子元元素中不不含有ool的元元素: $("ddiv"").ffiltter((funnctiion((inddex)) { rretuurn $(""ol"", tthiss).ssizee() == 0; });;is( exppr )) 注意:: 这个个函数返返回的不不是jQQuerry包装装集而是是Boooleaan值用一个表表达式来来检查当当前选择择的元素素集合,如如果其中中至少有有一个元元素符合合这个给给定的表表达式就就返回ttruee如果没有有元素符符合,或或者表达达式无效效,都返返回'ffalsse'.. 'ffiltter'' 内部部实际也也是在调调用这个个函数,所所以,ffiltter(()函数数原有的的规则在在这里也也适用。
由于innputt元素的的父元素素是一个个表单元元素,所所以返回回truue: $(""inpput[[typpe=''cheeckbbox'']")).paarennt()).iss("fformm")map(( caallbbackk )将一组元元素转换换成其他他数组(不不论是否否是元素素数组)你可以用用这个函函数来建建立一个个列表,不不论是值值、属性性还是CCSS样样式,或或者其他他特别形形式这这都可以以用'$$.maap())'来方方便的建建立把forrm中的的每个iinpuut元素素的值建建立一个个列表:: $("pp")..apppendd( $$("iinpuut")).maap(ffuncctioon()){ reeturrn $$(thhis)).vaal()); }}).gget(().jjoinn(",, ")) );;not(( exxpr )删除与指指定表达达式匹配配的元素素从p元素素中删除除带有 sellectt 的IID的元元素: $(""p")).noot( $(""#seelecctedd")[[0] )slicce( staart,, ennd ))选取一个个匹配的的子集选择第一一个p元元素: $(""p")).sllicee(0,, 1));2.查找找 Fiindiing名称说明举例add(( exxpr )把与表达达式匹配配的元素素添加到到jQuueryy对象中中。
这个个函数可可以用于于连接分分别与两两个表达达式匹配配的元素素结果集集动态生成成一个元元素并添添加至匹匹配的元元素中:: $(("p"").aadd(("
如如果元素素是一个个ifrramee,则查查找文档档内容查找所有有文本节节点并加加粗: $(""p")).coonteentss()..nott("[[noddeTyype==1]"").wwrapp("<>");;findd( eexprr )搜索所有有与指定定表达式式匹配的的元素这这个函数数是找出出正在处处理的元元素的后后代元素素的好方方法所有搜索索都依靠靠jQuueryy表达式式来完成成这个个表达式式可以使使用CSSS1--3的选选择器语语法来写写从所有的的段落开开始,进进一步搜搜索下面面的sppan元元素与与$(""p sspann")相相同: $(""p")).fiind(("sppan"")nextt( [[exppr] )取得一个个包含匹匹配的元元素集合合中每一一个元素素紧邻的的后面同同辈元素素的元素素集合这个函数数只返回回后面那那个紧邻邻的同辈辈元素,而而不是后后面所有有的同辈辈元素(可可以使用用nexxtAlll)可可以用一一个可选选的表达达式进行行筛选找到每个个段落的的后面紧紧邻的同同辈元素素: $$("pp")..nexxt())nexttAlll( [[exppr] )查找当前前元素之之后所有有的同辈辈元素。
可以用表表达式过过滤给第一个个divv之后的的所有元元素加个个类: $(""divv:fiirstt")..nexxtAlll()).adddCllasss("aafteer"));offssetPPareent(( )返回第一一个有定定位的父父类(比比如(rrelaativve或aabsoolutte))). pareent(( [eexprr] ))取得一个个包含着着所有匹匹配元素素的唯一一父元素素的元素素集合你可以使使用可选选的表达达式来筛筛选查找每个个段落的的父元素素: $$("pp")..parrentt()pareentss( [[exppr] )取得一个个包含着着所有匹匹配元素素的祖先先元素的的元素集集合(不不包含根根元素)可可以通过过一个可可选的表表达式进进行筛选选找到每个个spaan元素素的所有有祖先元元素: $(""spaan")).paarennts(()prevv( [[exppr] )取得一个个包含匹匹配的元元素集合合中每一一个元素素紧邻的的前一个个同辈元元素的元元素集合合可以用一一个可选选的表达达式进行行筛选只只有紧邻邻的同辈辈元素会会被匹配配到,而而不是前前面所有有的同辈辈元素。
找到每个个段落紧紧邻的前前一个同同辈元素素: $$("pp")..preev())prevvAlll( [[exppr] )查找当前前元素之之前所有有的同辈辈元素可以用表表达式过过滤给最后一一个之前前的所有有divv加上一一个类:: $(("diiv:llastt")..preevAlll()).adddCllasss("bbefoore"");sibllinggs( [exxpr]] )取得一个个包含匹匹配的元元素集合合中每一一个元素素的所有有唯一同同辈元素素的元素素集合可可以用可可选的表表达式进进行筛选选找到每个个divv的所有有同辈元元素: $(""divv")..sibblinngs(()3.串联联 Chhainningg 名称说明举例andSSelff( ))加入先前前所选的的加入当当前元素素中对于筛选选或查找找后的元元素,要要加入先先前所选选元素时时将会很很有用选取所有有divv以及内内部的pp,并加加上boordeer类:: $(("diiv")).fiind(("p"").aandSSelff()..adddClaass(("boordeer"));end(( )回到最近近的一个个"破坏坏性"操操作之前前。
即,将将匹配的的元素列列表变为为前一次次的状态态 如如果之前前没有破破坏性操操作,则则返回一一个空集集所谓谓的"破破坏性""就是指指任何改改变所匹匹配的jjQueery元元素的操操作这这包括在在 Trraveersiing 中任何何返回一一个jQQuerry对象象的函数数--''addd', 'anndSeelf'', ''chiildrren'', ''fillterr', 'fiind'', ''mapp', 'neext'', ''nexxtAlll',, 'nnot'', ''parrentt', 'paarennts'', ''preev',, 'pprevvAlll', 'siibliingss' aand 'sllicee'---再加上上 Maanippulaatioon 中中的 ''cloone''选取所有有的p元元素,查查找并选选取sppan子子元素,然然后再回回过来选选取p元元素: $(""p")).fiind(("sppan"").eend(() 五.常用用函数举举例[待续]] 六.总结结本篇文章章内容较较少, 主要讲讲解如何何动态创创建元素素以及管管理jQQuerry包装装集, 接口文文档列举举了太多多, 实例部部分还没没来得及及写. 因为要要睡觉明明天还要要上班,, 所以以请各位位见谅,, 等以以后有空空的时候候补上!!。