jQuery是一个合集对象,如果想快速查找合集里面的每一个元素的所有祖辈元素,此时可以用parents()方法
其实也类似find与children的区别,parent只会查找一级,parents则会往上一直查到查找到祖先节点
理解节点查找关系:
<div class="div"> <ul class="son"> <li class="grandson">1</li> </ul> </div>
在li节点上找到祖 辈元素div, 这里可以用$("li").parents()方法
parents()无参数
parents()方法允许我们能够在DOM树中搜索到这些元素的祖先元素,从有序的向上匹配元素,并根据匹配的元素创建一个新的 jQuery 对象;
返回的元素秩序是从离他们最近的父级元素开始的
注意:jQuery是一个合集对象,所以通过parent是匹配合集中所有元素的祖辈元素
parents()方法选择性地接受同一型选择器表达式
同样的也是因为jQuery是合集对象,可能需要对这个合集对象进行一定的筛选,找出目标元素,所以允许传一个选择器的表达式
注意事项:
1 .parents()和.parent()方法是相似的,但后者只是进行了一个单级的DOM树查找 2 $( "html" ).parent()方法返回一个包含document的集合,而$( "html" ).parents()返回一个空集合。
具体的操作,请参考右边的代码
请在右边代码区域的第75行填入任务代码
找到class="item-b"元素的所有祖辈元素 并且附上一个红色的边框
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <style> .left { width: auto; height: 350px; } .left div { width: 350px; height: 150px; padding: 5px; margin: 5px; float: left; background: #bbffaa; border: 1px solid #ccc; } span { color: blue; } </style> <script src="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.js"></script> </head> <body> <h2>parents方法()</h2> <div class="left first-div"> <div class="div"> <ul class="level-2"> <!-- A --> <li class="item-a">A</li> <!-- B --> <li class="item-b">B <ul class="level-3"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </li> <!-- C --> <li class="item-c">C</li> </ul> </div> <div class="div"> <ul class="level-2"> <!-- A --> <li class="item-a">A</li> <!-- B --> <li class="item-b">B <ul class="level-3"> <li class="item-1">1</li> <li class="item-2">2</li> <li class="item-3">3</li> </ul> </li> <!-- C --> <li class="item-c">C</li> </ul> </div> </div> <button>点击:parents无参数</button> <button>点击:parents传递选择器</button> <script type="text/javascript"> $("button:first").click(function() { //? }) </script> <script type="text/javascript"> $("button:last").click(function() { //找到当前元素的所有祖辈元素,筛选出class="first-div"的元素 //并且附上一个边 $('.item-b').parents('.first-div').css('border', '2px solid blue') }) </script> </body> </html>