源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

jquery遍历之parent()和parents()的区别及parentsUntil()方法详解

  • 时间:2020-07-10 01:54 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
[b].parent(selector)[/b] 获得当前匹配元素集合中每个元素的[b]父元素[/b],由选择器筛选(可选)。 [b].parents(selector)[/b] 获得当前匹配元素集合中每个元素的[b]祖先元素[/b],由选择器筛选(可选)。 如果给定一个表示 DOM 元素集合的 jQuery 对象,.parents() 方法允许我们在 DOM 树中搜索这些元素的祖先元素,并用从最近的父元素向上的顺序排列的匹配元素构造一个新的 jQuery 对象。元素是按照从最近的父元素向外的顺序被返回的。.parents() 和 .parent() 方法类似,不同的是后者沿 DOM 树向上遍历单一层级。 这两个方法都可以接受可选的选择器表达式,与我们向 $() 函数中传递的参数类型相同。如果应用这个选择器,则将通过检测元素是否匹配该选择器对元素进行筛选。 下面引用个例子
[url=#]           </p>         </div>      </div> </body>
思考: 例三
[url=http://www.w3school.com.cn/jquery/traversing_parent.asp]parent():http://www.w3school.com.cn/jquery/traversing_parent.asp[/url] [url=http://www.w3school.com.cn/jquery/traversing_parents.asp]parents():http://www.w3school.com.cn/jquery/traversing_parents.asp[/url] [b]parentsUntil() 方法[/b] 定义:parentsUntil() 获得当前匹配元素集合中每个元素的祖先元素,直到(但不包括)被选择器、DOM 节点或 jQuery 对象匹配的元素。 其实,parentsUntil()方法,以及nextUntil()方法、prevUntil()方法,原理一样。唯一不同的是nextUntil()是往下,prevUntil()是往上(同辈元素),parentsUntil()也是往上(找祖先元素) 下面看一个例子:
[u]复制代码[/u] 代码如下:
<!DOCTYPE html> <html> <head>   <script type="text/javascript" src="/jquery/jquery.js"></script> </head> <body> <ul class="level-1 yes">   <li class="item-i">I</li>   <li class="item-ii">II     <ul class="level-2 yes">       <li class="item-a">A</li>       <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>       <li class="item-c">C</li>     </ul>   </li>   <li class="item-iii">III</li> </ul> <script> $("li.item-a").parentsUntil(".level-1").css("background-color", "red"); $("li.item-2").parentsUntil( $("ul.level-1"), ".yes"  )   .css("border", "3px solid blue"); </script> </body>
得到结果如下: [img]http://files.jb51.net/file_images/article/201312/1351568682_8512.gif[/img] 分析:
[u]复制代码[/u] 代码如下:
$("li.item-a").parentsUntil(".level-1").css("background-color", "red");
[u]复制代码[/u] 代码如下:
<ul class="level-1 yes"> -->不符合。其实它是符合li.item-a的祖先元素的。但是根据parentsUntil()方法定义,是不包括选择器、DOM节点或jquery对象所匹配的元素的   <li class="item-i">I</li>-->不符合,这是它祖先元素的同辈元素。并不是li.item-a的祖先元素。   <li class="item-ii">II  -->符合     <ul class="level-2 yes"> -->符合       <li class="item-a">A</li> -->从这开始往上找其祖先元素。       <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>       <li class="item-c">C</li>     </ul>   </li>   <li class="item-iii">III</li> </ul>
再来看第二个语句:
[u]复制代码[/u] 代码如下:
$("li.item-2").parentsUntil( $("ul.level-1"), ".yes"  ).css("border", "3px solid blue");
[u]复制代码[/u] 代码如下:
<ul class="level-1 yes">-->是其祖先元素 且又满足选择器表达式".yes",但是根据parentsUntil()方法定义,是不包括选择器、DOM节点或jquery对象所匹配的元素的   <li class="item-i">I</li> 不匹配,不是其祖先元素。   <li class="item-ii">II-->是其祖先元素 不满足     <ul class="level-2 yes"> -->是其祖先元素 满足选择器表达式".yes" [所以,最终匹配到该节点,得到如上图所示的蓝色边框效果]       <li class="item-a">A</li>       <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>       <li class="item-c">C</li>     </ul>   </li>   <li class="item-iii">III</li> </ul>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部