32-解决方案
1.7.2 解决方案
jQuery提供 end() 方法,可以用它返回使用破坏性方法之前选择的一组DOM元素。为了理解 end() 方法,我们来看看下面的HTML。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p>text</p>
<p class="middle">Middle <span>text</span></p>
<p>text</p>
<script type="text/JavaScript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/JavaScript">
alert(jQuery('p').filter('.middle').length); //alerts 1
alert(jQuery('p').filter('.middle').end().length); //alerts 3
alert(jQuery('p').filter('.middle').find('span')
.end().end().length); //alerts 3
</script>
</body>
</html>
代码中的第一条 alert() 语句包含的jQuery语句搜索文档中所有 <p> 元素,然后对选中的
元素应用 filter() 方法,仅选择类为 middle 的元素。 length 属性报告了集合中剩下元素的数量:
alert(jQuery('p').filter('.middle').length); //提示1
下一条 alert() 语句使用了 end() 方法。这里所做的操作和前一条语句相同,唯一例外的是撤消了 filter() 方法,返回 filter() 方法使用前包装器集包含的元素:
alert(jQuery('p').filter('.middle').end().length); //提示3
最后一条 alert() 语句示范了如何两次使用 end() 方法移除 filter() 和 find() 破坏性修改,使包装器集返回其原始构成的方法:
alert(jQuery('p').filter('.middle').find('span').end().end().length); //提示3