.addBack()
返回: jQuery
.addBack( [selector ] )
描述:把推栈中的前一个元素的集合添加到当前集合,视情况用一个选择器作筛选。
正如讲解.end()
的页面所描述的,jQuery对象保留了一个内部堆栈,以保存元素的匹配集合的变化。在调用一种DOM遍历方法的时候,新的元素集合被跟加到堆栈中。如果又想要元素的前一个集合了,.addBack()
能够帮助你。
设想有一个网页,带有一个简单的<li>列表:
<ul> <li>list item 1</li> <li>list item 2</li> <li class="third-item">list item 3</li> <li>list item 4</li> <li>list item 5</li> </ul>
下面的代码的结果是item3、item4和item5后面有红色的背景:
$( "li.third-item" ).nextAll().addBack() .css( "background-color", "red" );
首先,初始选择器定位到item3,初始化堆栈带有只包含这个项目的集合。调用.nextAll()
,把item4和item5的集合跟回到推栈中。最后,调用.addBack()
把两个集合合并到一起,创建了一个jQuery对象,指向全部3个项目,按照它们在document中的顺序:{[<li.third-item>,<li>,<li> ]}
示例
.addBack()
方法导致遍历堆栈中前一个DOM元素集合被添加到当前的集合中。在第一个示例中,顶级堆栈包含了来自.find("p")
的结果集。在第二个示例中,.addBack()
把堆栈中的前一个元素集合——在这个示例中是$("div.after-addback")
——添加到当前集合,选择两个div以及它们所封装的段落文本。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>addBack demo</title> <style> p, div { margin: 5px; padding: 5px; } .border { border: 2px solid red; } .background { background: yellow; } .left, .right { width: 45%; float: left; } .right { margin-left: 3%; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <div class="left"> <p><strong>Before <code>addBack()</code></strong></p> <div class="before-addback"> <p>First Paragraph</p> <p>Second Paragraph</p> </div> </div> <div class="right"> <p><strong>After <code>addBack()</code></strong></p> <div class="after-addback"> <p>First Paragraph</p> <p>Second Paragraph</p> </div> </div> <script> $( "div.left, div.right" ).find( "div, div > p" ).addClass( "border" ); // First Example $( "div.before-addback" ).find( "p" ).addClass( "background" ); // Second Example $( "div.after-addback" ).find( "p" ).addBack().addClass( "background" ); </script> </body> </html>
演示结果