.addBack()和.parent()有什么区别?

时间:2013-07-26 23:21:10

标签: jquery

.addBack()和.parent()有什么区别?

看起来他们都只是遍历一个级别并选择元素。

3 个答案:

答案 0 :(得分:3)

这取决于你来自哪里。 parent()将始终选择直接父元素,addBack()的结果取决于前一个选择器的结果:

  

.addBack([selector])

     

返回:jQuery   描述:将堆栈上的前一组元素添加到当前集合,可选择由选择器过滤。

查看以下jsfiddle示例: http://jsfiddle.net/vGAq5/2/

第一个警报将选择所有以下第二个兄弟姐妹,加回第二个。 第二个aler将选择所有后面的第二个兄弟,并取其父级(而不是将其添加到结果集中)。

答案 1 :(得分:3)

完全不同的方法:

addBack() - add the current selection to the previous one and merges those selections

parent() - selects the direct parent of the current selection

查看官方文档:

http://api.jquery.com/addBack/

http://api.jquery.com/parent/

基本示例:

考虑html:

<div id="parent">
    <div id="child">
    </div>
</div>

的javascript:

console.log($('#child').parent()); // return the div#parent selection

console.log($('#child').addBack()); // return the div#child selection - it merges the div#child with the previous selection (which happens to be empty)

答案 2 :(得分:2)

parent的结果获得的DOM是当前选择的直接DOM父级,而addBack在jQuery中进行链接时获得之前的选择。

使用以下示例:

<div class="the-one">
  <div class="child-1">
    <div class="grandchild-1"></div>
    <div class="grandchild-2"></div>
  </div>
  <div class="child-2"></div>
  <div class="child-3"></div>
</div>

如果您运行$('.the-one').find('.grandchild-1').parent(),您将获得child-1

如果您运行$('.the-one').find('.grandchild-1').addBack(),您将获得the-onegrandchild-1

addBack通常用于在链接中横向移动DOM时,您想要一种简单的方法返回到先前的选择并进行另一次横切。