《jQuery Cookbook中文版》——1.6 查找当前选择包装器集中的后代元素

    xiaoxiao2024-04-21  9

    本节书摘来自异步社区《jQuery Cookbook中文版》一书中的第1章,第1.6节,作者:【美】jQuery社区专家组 译者:姚军 , 孙博更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.6 查找当前选择包装器集中的后代元素

    1.6.1 问题你选择了一组(或者一个)DOM元素,希望在当前选中元素的上下文中找到后代(子)元素。

    1.6.2 解决方案使用.find()方法,根据当前集合及其后代的上下文创建一个新的元素包装器集。例如,假设你有一个包含多个段落的网页,这些段落中封装的是需要强调(以斜体显示)的单词。如果你只想选择

    元素中包含的元素,可以使用如下代码:

    <!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 elements'); </script> </body> </html>

    记住,也可以改写上述代码,将上下文引用作为jQuery函数的第二个参数:

    alert('The three paragraphs in all contain ' + jQuery('em',$('p')).length + ' italic elements');

    此外,值得一提的是,最后这两个代码示例只是为了说明的目的而编写的。使用CSS选择器表达式选择包含在元素(祖先)中的斜体元素(后代)即使不实用,也是更符合逻辑的。

    alert('The three paragraphs in all contain ' + jQuery('p em').length + ' italic elements');

    **1.6.3 讨论**jQuery .find()方法可以用于根据当前DOM元素集及其子元素的上下文创建新的元素集。人们往往混淆filter()和.find()方法的用法。记住两者差异的最简手段是记住.find()将操作/选择当前集合的子元素,而.filter()只操作当前元素集。换句话说,如果你想将当前包装器集当作上下文,进一步选择集合中元素的子元素,从而改变当前的包装器集,就应该使用.find()。如果你只想过滤当前包装集,获得集合中当前DOM元素的一个新子集,则使用.filter()。归纳起来就是:find()返回子元素,而filter()只过滤当前包装集里的元素。

    相关资源:七夕情人节表白HTML源码(两款)
    最新回复(0)