parents()
函数用于选取每个匹配元素的祖先元素,并以jQuery对象的形式返回。
你还可以使用选择器来进一步缩小选取范围,只选取其中符合指定选择器的元素。
该函数属于jQuery
对象(实例)。
语法
jQueryObject.parents( [ selector ] )
参数
参数 | 描述 |
---|---|
selector | 可选/String类型指定的选择器字符串,用于筛选匹配的元素。 |
parents()
函数将选取当前jQuery对象每个匹配元素的符合选择器selector
的祖先元素。
如果省略selector
参数,则选取所有的祖先元素。
返回值
parents()
函数的返回值为jQuery类型,返回一个新的jQuery对象,该对象封装了当前jQuery对象每个匹配元素的符合选择器selector
(如果指定了的话)的所有祖先元素。
如果没有符合条件的元素,则返回空的jQuery对象。
示例&说明
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.parents() 函数详解</title> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script> $(function(){ /*扩展jQuery对象,添加showTagInfo()方法 用于将jQuery对象所有匹配元素的标识信息追加到body元素内 每个元素的标识信息形如:"tagName"或"tagName#id"*/ jQuery.fn.showTagInfo=function(){ var tags=this.map(function () { return this.tagName+(this.id?"#"+this.id:""); }).get(); $('body').append(tags.join("<br>")+"<br><br>"); }; var $n4=$('#n4'); /*获取n4的祖先元素*/ var $parents1=$n4.parents(); $parents1.showTagInfo(); var $p=$('p'); /*获取所有p元素的祖先元素*/ var $parents2=$p.parents(); $parents2.showTagInfo(); /*获取所有p元素的包含类名"bar"的祖先元素*/ var $parents3=$p.parents('.bar'); $parents3.showTagInfo(); var $foo=$('.foo'); /*获取所有包含类名"foo"的元素的祖先元素中的div元素*/ var $parents4=$foo.parents('div'); $parents4.showTagInfo(); }); </script> </head> <body> <div id="n1"> <p id="n2"></p> <p id="n3"><span id="n4" class="foo"></span></p> </div> <div id="n5" class="bar"> <p id="n6" class="foo"></p> </div> </body> </html>
prev()
函数用于筛选每个匹配元素之前紧邻的同辈元素,并以jQuery对象的形式返回。
你还可以使用指定的选择器进一步缩小筛选范围,筛选出符合指定选择器的元素。
与该函数相对的是next()函数,用于筛选每个匹配元素之后紧邻的同辈元素。
该函数属于jQuery
对象(实例)。
语法
jQueryObject.prev( [ selector ] )
参数
参数 | 描述 |
---|---|
selector | 可选/String类型指定的选择器字符串。 |
prev()
函数将在当前jQuery对象每个匹配元素的上一个相邻的同辈元素中筛选符合指定选择器的元素。
如果省略selector
参数,则选取每个匹配元素的上一个相邻的同辈元素。
返回值
prev()
函数的返回值为jQuery类型,返回一个新的jQuery对象,该对象封装了当前jQuery对象所有匹配元素的上一个紧邻的符合指定选择器的同辈元素。
如果没有符合条件的元素,则返回空的jQuery对象。
示例&说明
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.prev() 函数详解b</title> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script> $(function(){ /*扩展jQuery对象 添加showTagInfo()方法 用于将jQuery对象所有匹配元素的标识信息追加到body元素内 每个元素的标识信息形如:"tagName"或"tagName#id"*/ jQuery.fn.showTagInfo=function(){ var tags=this.map(function () { return this.tagName+(this.id?"#"+this.id:""); }).get(); $('body').append(tags.join("<br>")+"<br><br>"); } /*匹配所有span元素:e2 e3 e4 e5 e7 e9*/ var $span=$('span'); var $span_prev=$span.prev(); $span_prev.showTagInfo(); /*匹配所有span元素之前相邻的同辈span元素*/ var $span_prev_span=$span.prev('span'); $span_prev_span.showTagInfo(); }); </script> </head> <body> <p id="e1"> <span id="e2" class="site"> <span id="e3" class="item site-name">CodePlayer</span> <span id="e4" class="item site-desc">专注于编程开发技术分享</span> </span> <span id="e5" class="site-url">http://www.365mini.com</span> </p> <p id="e6"> JavaScript<span id="e7" class="highlight">jQuery</span> <a id="e8" href="http://www.365mini.com">CodePlayer</a> <span id="e9" class="highlight">PHP</span> </p> </body> </html>
prevAll()
函数用于选取每个匹配元素之前的所有同辈元素,并以jQuery对象的形式返回。
你还可以使用选择器来进一步缩小选取范围,筛选出符合指定选择器的元素。
与该函数相对的是nextAll()函数,用于选取每个匹配元素之后的所有同辈元素。
该函数属于jQuery
对象(实例)。
语法
jQuery 1.2 新增该函数。
jQueryObject.prevAll( [ selector ] )
参数
参数 | 描述 |
---|---|
selector | 可选/String类型指定的选择器字符串。 |
prevAll()
函数将在当前jQuery对象每个匹配元素之前的同辈元素中筛选符合指定选择器的元素。
如果省略selector
参数,则选取每个匹配元素之前的所有同辈元素。
返回值
prevAll()
函数的返回值为jQuery类型,返回一个新的jQuery对象,该对象封装了当前jQuery对象每个匹配元素之前的所有符合指定选择器的同辈元素。
如果没有符合条件的元素,则返回空的jQuery对象。
示例&说明
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.prevAll() 函数详解</title> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script> $(function(){ /*扩展jQuery对象 添加showTagInfo()方法 用于将jQuery对象所有匹配元素的标识信息追加到body元素内 每个元素的标识信息形如:"tagName"或"tagName#id"*/ jQuery.fn.showTagInfo=function(){ var tags=this.map(function () { return this.tagName+(this.id?"#"+this.id:""); }).get(); $('body').append(tags.join("<br>")+"<br><br>"); } var $n6=$('#n6'); /*匹配n6之前所有的同辈元素*/ var $n6_prevAll=$n6.prevAll(); $n6_prevAll.showTagInfo(); /*匹配n6之前的所有同辈strong元素*/ var $n6_prevAll_strong=$n6.prevAll('strong'); $n6_prevAll_strong.showTagInfo(); var $label=$('label'); /*匹配所有label元素之前的包含类名"active"的同辈元素*/ var $label_prevAll_active=$label.prevAll('.active'); $label_prevAll_active.showTagInfo(); }) </script> </head> <body> <p id="n1"> <span id="n2"> <span id="n3">A</span> </span> <strong id="n4" class="active">B</strong> <span id="n5" class="active">C</span> <label id="n6">D</label> <span id="n7"> <span id="n8">E</span> </span> </p> <p id="n9"> <span id="n10" class="active"></span> <label id="n11"></label> <span id="n12"></span> </p> </body> </html>
data()
函数用于在当前jQuery对象所匹配的所有元素上存取数据。
通过data()
函数存取的数据都是临时数据,一旦页面刷新,之前存放的数据都将不复存在。
该函数属于jQuery
对象(实例)。如果需要移除通过data()
函数存放的数据,请使用removeData()函数。
语法
data()
函数有以下两种用法:
用法一:
jQueryObject.data( [ key [, value ] ])
以指定的键名key
存取数据。如果指定了value
参数,则表示以键名key
存放值为value
的数据;如果没有指定value
参数,则表示读取之前以键名key
存放的数据;如果没有指定任何参数,则以对象形式返回之前存储的所有数据。
用法二:
jQueryObject.data( object )
以对象形式同时传入任意多个key-value形式的数据,对象的每个属性就是键名key
,属性值就是value
。
注意:data()
函数的所有"存储数据"操作针对当前jQuery对象所匹配的每一个元素;所有"读取数据"操作只针对第一个匹配的元素。
参数
请根据前面语法部分所定义的参数名称查找对应的参数。
参数 | 描述 |
---|---|
key | 可选/String类型指定的键名字符串。 |
value | 可选/任意类型需要存储的任意类型的数据。 |
object | Object类型指定的对象,用于封装多个键值对,同时存储多项数据。 |
返回值
data()
函数的返回值是任意类型,返回值的类型取决于当前data()
函数执行的是"存储数据"操作还是"读取数据"操作。
如果data()
函数执行的是"存储数据"操作,则返回当前jQuery对象本身;如果是"读取数据"操作,则返回读取到的数据。
如果当前jQuery对象匹配多个元素,读取数据时,data()
函数只以其中第一个匹配的元素为准。
如果执行data(key)
函数(仅传入一个参数key
)时找不到相应的数据,则返回undefined
。如果执行data()
函数(不带任何参数)时找不到相应的数据,则返回一个空的对象(没有任何属性)。
示例&说明
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.data() 函数详解</title> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script> $(function(){ /*在当前页面内追加换行标签和指定的HTML内容*/ function w(html){ $(document.body).append("<br>"+html); } var $li=$('li'); /*同时向所有的li元素存储数据*/ $li.data('name','CodePlayer'); $li.data('desc','专注于编程开发技术分享'); $li.data('url','http://www.365mini.com/'); var $n5=$('#n5');//通过n4 n5 n6都可以读取数据 /*返回键值对name所对应的数据*/ w($n5.data('name')); /*以对象的形式返回所有数据*/ var obj=$('#n6').data(); for(var i in obj){ w(i+"="+obj[i]); } /*移除掉n4上存储的键名为name的数据*/ $('#n4').removeData('name'); /*虽然$li匹配3个li元素,但是读取数据只以第一个li元素n4为准,因此返回undefinded*/ w($li.data('name')); var object={ name:"张三", age:18, score:[87,23,56], options:{gender:'男',address:'水帘洞'} /*同时向所有的div元素以对象形式设置对个key-value数据 value值可以是任意类型的数据 包括数组,对象等*/ } $('div').data(object); var $n2=$('#n2'); w($n2.data('name')); w($n2.data('age')); w($n2.data('score')); w($n2.data('options')); }); </script> </head> <body> <div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> </div> </body> </html>
is()
函数用于判断当前jQuery对象所匹配的元素是否符合指定的表达式。只要其中有至少一个元素符合该表达式就返回true
,否则返回false
。
这里的表达式包括:选择器(字符串)、DOM元素(Element)、jQuery对象、函数。
该函数属于jQuery
对象(实例)。
语法
jQueryObject.is( expr )
参数
参数 | 描述 |
---|---|
expr | String/Element/jQuery/Function类型指定的表达式。 |
is()
函数实际上是判断当前jQuery对象所匹配的元素与指定表达式expr
所表示的元素是否存在交集,如果存在交集就返回true
,否则返回false
。
如果expr
参数为字符串,则将其视作jQuery选择器,用以表示该选择器所匹配的元素。
jQuery 1.6 新增支持:参数expr
可以为DOM元素(Element)、jQuery对象或函数。
如果expr
参数为函数,is()
函数将根据匹配的所有元素遍历执行该函数,函数中的this
将指向当前迭代的元素。is()
还会为函数传入一个参数:即该元素在匹配元素中的索引。
函数expr
的返回值应该为true
或者false
。该函数的返回值将决定is()
的返回值。循环执行时,只要该函数的返回值有一次为true
,is()
函数就立即返回true
,否则返回false
。
返回值
is()
函数的返回值为Boolean类型,以指示当前jQuery对象所匹配的元素与参数expr
所表示的元素是否存在交集,如果存在交集,则返回true
,否则返回false
。
示例&说明
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.is() 函数详解</title> </head> <body> <div id="n1"> <div id="n2"> <ul id="n3" data_id="12"> <li id="n4">item1</li> <li id="n5" class="foo bar">item2</li> <li id="n6" class="level-2">item3</li> </ul> </div> <div id="n7"> <input id="n8" name="username" type="text" value="1"> <input id="n9" name="orders" type="checkbox" checked="checked" value="1"> </div> </div> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script> $(function(){ /*在当天页面内追加换行标签和指定的HTML内容*/ function w(html){ $(document.body).append("<br>"+html); } var $n3=$('#n3'); w($n3.is("ul")); w($n3.is('[data_id]')); var $n5=$('#n5'); w($n5.is('.foo')); w($n5.is('li')); w($n5.is('ul li')); w($n5.is('p li')); var n5=document.getElementById('n5'); w($n5.is(n5)); var $li=$('li'); w($n5.is($li)); /*判断li元素是否含有类名"level-index",这里的index表示li元素的索引值(0、1、2……)*/ w($li.is(function(index){ return $(this).hasClass('level-'+index); })); var $input=$('input'); w($input.is(':text')); w($input.is(':checked')); var div=document.getElementsByTagName('div'); var $n7=$('#n7'); w($n7.is(div)); }); </script> </html>
eq()
函数用于获取当前jQuery对象所匹配的元素中指定索引的元素,并返回封装该元素的jQuery对象。
该函数属于jQuery
对象(实例)。
语法
jQuery 1.1.2 新增该函数。
jQueryObject.eq( index )
参数
参数 | 描述 |
---|---|
index | Number类型指定的索引值,从0开始计数。 |
jQuery 1.4 新增支持:参数index
可以为负数。如果index
为负数,则将其视作length + index
,这里的length
指的是匹配到的元素的个数(负数的index
也可理解为从后往前计数)。
返回值
eq()
函数的返回值为jQuery类型,返回封装了指定索引index
处的元素的jQuery对象。
如果索引值超出有效范围,则返回空的jQuery对象。
示例&说明
eq()
函数与:eq()选择器具有如下等价代码:
$( "selector" ).eq( index ); //等价于 $( "selector:eq(index)" );
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.eq() 函数详解</title> </head> <body> <div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> <div id="n7"> <ul id="n8"> <li id="n9">item1</li> <li id="n10">item2</li> </ul> </div> </div> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script type="text/javascript"> /*在当前页面内追加换行标签和指定的HTML内容*/ $(function(){ function w(html){ $(document.body).append('<br>'+html); } /*匹配n4 n5 n6 n9 n10这5个元素*/ var $li=$('li'); /*获取匹配到的第二个元素 即:n5*/ var $n5=$li.eq(1); w($n5.attr('id'));//attr() 方法设置或返回被选元素的属性和值。 /*获取匹配到的第四个元素 即:n9*/ var $n9=$li.eq(3); w($n9.attr('id')); /*获取匹配的第-3个元素 即n6*/ var $n6=$li.eq(-3); w($n6.attr('id')); }); </script> </html>
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery:遍历求和</title> </head> <body> <table width="100%" border="0" class="table_sum"> <tr><td colspan="2">产品1号(table的class=num_sum)</td></tr> <tr> <td>数量</td> <td>单价</td> </tr> <tr> <td>10</td> <td>2</td> </tr> <tr> <td>20</td> <td>3</td> </tr> <tr> <td>合计</td> <td class="sum">5(JQUERY自动计算结果,td的class=sum)</td> </tr> </table> <table width="100%" border="0" class="table_sum"> <tr><td colspan="2">产品2号(table的class=num_sum)</td></tr> <tr> <td>数量</td> <td>单价</td> </tr> <tr> <td>10</td> <td>6</td> </tr> <tr> <td>20</td> <td>7</td> </tr> <tr> <td>合计</td> <td class="sum">13(JQUERY自动计算结果,td的class=sum)</td> </tr> </table> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script type="text/javascript"> /*遍历class="table_sum"的表 判断tr中的第一个td是不是数字 是数字的话就计算第二个td的值 最后把结果放到该表的class="sum"的td格中*/ $(function(){ $('.table_sum').each(function(){//each()函数用于以当前jQuery对象匹配到的每个元素作为上下文来遍历执行指定的函数。所谓的上下文,意即该函数内部的this指针引用了该元素。 var sum=0; $('tr',this).each(function(){ if(Number($('td',this).eq(0).html())>=0){//Number() 函数把对象的值转换为数字。 sum+=Number($('td',this).eq(0).html()); } }) $('.sum',this).html(sum); }) }); </script> </html>
each()
函数用于以当前jQuery对象匹配到的每个元素作为上下文来遍历执行指定的函数。
所谓的上下文,意即该函数内部的this
指针引用了该元素。
该函数属于jQuery
对象(实例)。请注意,这与全局jQuery对象的each()函数不同。
语法
jQueryObject.each( callback )
参数
参数 | 描述 |
---|---|
callback | Function类型指定的用于循环执行的函数。 |
each()
函数将根据匹配到的每一个元素循环调用函数callback
。每次调用函数callback
时,each()
函数都会将callback
函数内部的this
引用指向当前正在迭代的元素,并为其传入两个参数。第一个参数是当前迭代元素在匹配到的元素中的索引值(从0开始计数),第二个参数是当前迭代元素(与this
的引用相同)。
each()
函数还会根据每次调用函数callback
的返回值来决定后续动作。如果返回值为false
,则停止循环(相当于普通循环中的break
);如果返回其他任何值,均表示继续执行下一个循环。
返回值
each()
方法的返回值为jQuery类型,返回当前jQuery对象本身。
示例&说明
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.each() 函数详解</title> </head> <body> <div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5">item2</li> <li id="n6">item3</li> </ul> </div> </div> <form id="demoForm"> <input name="goods_weight" type="checkbox" value="20">A(20kg)<br> <input name="goods_weight" type="checkbox" value="33">B(33kg)<br> <input name="goods_weight" type="checkbox" value="36">C(36kg)<br> <input name="goods_weight" type="checkbox" value="49">D(49kg)<br> <input name="goods_weight" type="checkbox" value="56">E(56kg)<br> <input name="goods_weight" type="checkbox" value="78">F(78kg)<br> <input id="btnBuy" type="button" value="订购"> </form> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script type="text/javascript"> $(function(){ $('ul li').each(function(index,element){ $(element).html('编号'+(index+1)); }) $('#btnBuy').click(function(){ var weight=0; $('[name=goods_weight]:checked').each(function(){ weight+=parseInt(this.value);// this === element if(weight>100){//重量超标 停止循环 return false; } }); if(weight <= 0){ alert("没有选择任何商品!"); }else if(weight > 100){ alert("一次订购的商品重量不能超过100kg!"); }else{ // 订购商品 alert("订购商品成功!"); } }); }); </script> </html>
hasClass()
函数用于指示当前jQuery对象所匹配的元素是否含有指定的css类名。
该函数属于jQuery
对象(实例)。
语法
jQuery 1.2 新增该函数。
jQueryObject.hasClass( className )
参数
参数 | 描述 |
---|---|
className | String类型指定的css类名。 |
返回值
hasClass()
函数的返回值是Boolean类型,返回表示是否包含指定css类名的boolean值,如果包含就返回true
,否则返回false
。
如果当前jQuery对象匹配多个元素,只要其中有任意一个元素含有指定的css类名,就返回true
。
示例&说明
hasClass(className)
函数等价于is(".className")
:
$element.hasClass( className ); // 等价于 $element.is( "." + className );
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.hasClass() 函数详解</title> </head> <body> <div id="n1"> <p id="n2" class="site-name">CodePlayer</p> <p id="n3" class="foo bar demo">专注于编程开发技术分享</p> </div> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script type="text/javascript"> $(function(){ /*在当前页面内追加换行标签和指定的html内容*/ function w(html){ $(document.body).append('<br>'+html); } var $n2=$('#n2'); w($n2.hasClass('site-name')); var $n3=$('#n3'); w($n3.hasClass('bar')); /*不存在该css类名 返回false*/ w($n3.hasClass('noClass')); var $p=$('p'); /*只要jQuery对象匹配的元素中有任意一个元素包含指定的css类名 即返回true*/ w($p.hasClass('site-name')); w($p.hasClass('foo')); }); </script> </html>
first()
函数用于获取当前jQuery对象所匹配的元素中的第一个元素,并返回封装该元素的jQuery对象。
该函数属于jQuery
对象(实例)。
语法
jQuery 1.4 新增该函数。
jQueryObject.first( )
返回值
first()
函数的返回值为jQuery类型,返回封装了第一个匹配元素的jQuery对象。
如果当前jQuery对象没有匹配任何元素,自然也不存在第一个匹配到的元素,此时将返回空的jQuery对象。
示例&说明
first()
函数与:first选择器具有如下等价代码:
$( "selector" ).first( ); //等价于 $( "selector:first" ); //等价于 $( "selector:eq(0)" ); //等价于 $( "selector" ).eq( 0 );
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.first() 函数详解</title> </head> <body> <div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5" class="list">item2</li> <li id="n6" class="list">item3</li> </ul> </div> </div> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script type="text/javascript"> $(function(){ /*在当前页面内追加换行标签和指定的HTML内容*/ function w(html){ $(document.body).append('<br>'+html); } /*获取第一个li元素 即:n4*/ /*先匹配所有的li元素 再获取其中的第一个*/ w($('li').first().attr('id'));//attr():设置或返回被选元素的属性和值 /*获取第一个li.list元素,即:n5*/ /*先匹配所有的li.list元素 再获取其中的第一个*/ w($('li.list').first().attr('id')); /*获取第1个div元素 即:n1 先匹配所有的div元素 再获取其中的第一个*/ w($('div').first().attr('id')); }); </script> </html>
last()
函数用于获取当前jQuery对象所匹配的元素中的最后一个元素,并返回封装该元素的jQuery对象。
该函数属于jQuery
对象(实例)。
语法
jQuery 1.4 新增该函数。
jQueryObject.last( )
返回值
last()
函数的返回值为jQuery类型,返回封装了最后一个匹配元素的jQuery对象。
如果当前jQuery对象没有匹配任何元素,自然也不存在所谓的最后一个元素,此时将返回空的jQuery对象。
示例&说明
last()
函数与:last选择器具有如下等价代码:
$( "selector" ).last( ); //等价于 $( "selector:last" );
以下面这段HTML代码为例:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.last() 函数详解</title> </head> <body> <div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4" class="list">item1</li> <li id="n5" class="list">item2</li> <li id="n6">item3</li> </ul> </div> </div> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script type="text/javascript"> $(function () { /*在当前页面内追加换行标签和指定的HTML内容*/ function w(html){ $(document.body).append('<br>'+html); } /*获取最后一个li元素 即:n6 先匹配所有li元素 再获取其中的最后一个*/ w($('li').last().attr('id'))//attr():设置或换回被选元素的属性和值 /*获取最后一个li.list元素 即:n5 先匹配所有li.list元素 再获取其中的最后一个*/ w($('li.list').last().attr('id')); /*获取最后一个div元素 即:n2 先匹配所有div元素 再获取其中的最后一个*/ w($('div').last().attr('id')) }); </script> </html>
slice()
函数用于选取匹配元素中一段连续的元素,并以jQuery对象的形式返回。
该函数属于jQuery
对象(实例)。
语法
jQuery 1.1.4 新增该函数。
jQueryObject.slice( startIndex [, endIndex ] )
参数
参数 | 描述 |
---|---|
startIndex | Integer类型指定选取的起始索引,从0开始算起。 |
endIndex | 可选/Integer类型指定的结束索引(不包括该索引位置的元素)。 |
如果startIndex
为负数,则表示startIndex + length
,length
表示匹配的元素个数(也可理解为从后向前计数)。
如果endIndex
为负数,则表示endIndex + length
,length
表示匹配的元素个数(也可理解为从后向前计数)。
如果省略endIndex参数,则一直选取到集合末尾。
返回值
slice()
函数的返回值为jQuery类型,返回一个新的jQuery对象,该对象封装了当前jQuery对象匹配的元素中索引从startIndex
到endIndex
(不包括endIndex
)的一段连续的元素。
如果选取范围无效,将返回空的jQuery对象。
slice()
函数并不会更改当前jQuery对象的元素匹配,选取的结果只反映在作为返回值的新的jQuery对象中。
示例&说明
请参考下面这段HTML演示代码:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>jQuery.slice() 函数详解</title> </head> <body> <div id="n1"> <div id="n2"> <ul id="n3"> <li id="n4">item1</li> <li id="n5" class="foo bar">item2</li> <li id="n6">item3</li> <li id="n7">item4</li> <li id="n8">item5</li> </ul> </div> </div> </body> <script type="text/javascript" src="js/jquery-1.12.4.js"></script> <script type="text/javascript"> $(function(){ /*扩展jQuery对象 添加showTagInfo()方法 用于将jQuery对象所有匹配元素的标识信息追加到body元素内 每个元素的标识信息形如:"tagName"或"tagName#id"*/ jQuery.fn.showTagInfo=function(){ var tags=this.map(function(){ return this.tagName+(this.id?"#"+this.id:""); }).get() $('body').append(tags.join('<br>')+'<br><br>'); } /* $("li") 匹配n4、n5、n6、n7、n8这5个元素 */ //选取第二元素 $('li').slice(1,2).showTagInfo(); //获取第四 五个元素 $("li").slice( 3 ).showTagInfo(); //选取第1~4个元素 //startIndex = length + (-5) = 0,endIndex = length + (-1) = 4 $("li").slice( -5, -1).showTagInfo( ); // LI#n4,LI#n5,LI#n6,LI#n7 }); </script> </html>