当前位置:编程学习 > JAVA >>

jQuery参考实例 -在当前选中的元素集中查找下级元素

本文翻译自jQuery Cookbook (O’Reilly 2009) 1.6 Finding Descendant Elements Within the Currently Selected Wrapper Set
需求
在选中一个或几个元素后,需要在这些DOM元素范围内查找下级元素或子元素。
解决方案
从当前几个元素及其下级元素中查找并创建新的元素集,可以用find()方法。比如,有一张包含多个文字段落(<p>)的网页,每个段落中会有一些文字是斜体的(<em>)。如果需要选择所有<p>段落中的<em>元素,可以这么做:
<!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>Ut ad videntur facilisis <em>elit</em> cum. Nibh insitam erat facit
<em>saepius</em> magna. Nam ex liber iriure et imperdiet. Et mirum eros
iis te habent. </p>
  <p>Claram claritatem eu amet dignissim magna. Dignissim quam elit facer eros
illum. Et qui ex esse <em>tincidunt</em> anteposuerit. Nulla nam odio ii
vulputate feugait.</p>
  <p>In quis <em>laoreet</em> te legunt euismod. Claritatem <em>consuetudium</em>
wisi sit velit facilisi.</p>
  <script type="text/JavaScript"
    src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
  <script type="text/JavaScript">
    //警告框显示所有p元素中斜体文字的数目
    alert('The three paragraphs in all contain ' +
      jQuery('p').find('em').length + '
        italic words');
  </script>
</body>
</html>
值得注意的是,上述代码可以直接用jQuery函数来重写,只需将<p>元素集作为上下文参数传给jQuery函数即可:
alert('The three paragraphs in all contain ' + jQuery('em',$('p')).length +
  ' italic words');
事实上,上面的两种方法一般仅作演示用。更实用也更符合逻辑的做法是使用CSS选择器表达式:
alert('The three paragraphs in all contain ' + jQuery('p em').length +
  ' italic words');
讨论
jQuery的find()方法会根据调用该方法的DOM元素及其子元素来查找创建新的元素集。在实际使用中,find()函数很容易与filter()函数混淆。最简单的区分两者的方法是:find()针对的是当前元素集的下级元素或子元素,而filter()针对的是当前元素集本身。换而言之,如果想从当前元素集的下级元素或子元素中查找,find()方法比较合适;而如果想对当前元素集本身进行过滤来获取一个子集,那么filter()方法才是不二之选。更直白的说,find()方法返回的是子元素组成的集合,而filter()方法返回的是当前元素集经过过滤后的子集。
 
补充:web前端 , JavaScript ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,