jQuery:after()和insertAfter()之间有什么区别

Che*_*eso 45 javascript jquery insertafter jquery-after

jQuery有一个.after()方法,也有一个.insertAfter()方法.

他们之间有什么区别?我想我可以使用.after()在所选元素(或元素)之后插入元素.是对的吗?有什么.insertAfter()用?

gra*_*ine 71

它们是相互对立的.

' after '在选择器插入参数.

' insertAfter '在参数后插入选择器.

以下是与此相同的示例:

insertafter():

<div class="container">
  <h2>Greetings</h2>
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>
$( "<p>Test</p>" ).insertAfter( ".inner" );
Each inner <div> element gets this new content:
<div class="container">
  <h2>Greetings</h2>
  <div class="inner">Hello</div>
  <p>Test</p>
  <div class="inner">Goodbye</div>
  <p>Test</p>
</div>
Run Code Online (Sandbox Code Playgroud)

后():

<div class="container">
  <h2>Greetings</h2>
  <div class="inner">Hello</div>
  <div class="inner">Goodbye</div>
</div>
$( ".inner" ).after( "<p>Test</p>" );

<div class="container">
  <h2>Greetings</h2>
  <div class="inner">Hello</div>
  <p>Test</p>
  <div class="inner">Goodbye</div>
  <p>Test</p>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 一个主要的区别是"回报"值.您调用其函数的实例是返回的实例 (13认同)
  • 很高兴你使用了"对面"这个词,所以我可以找到这个:-) (2认同)

Chr*_*ark 23

他们是彼此的逆转.正如jQuery 文档中所解释的那样:

这个:

$("p").insertAfter("#foo");
Run Code Online (Sandbox Code Playgroud)

与此相同:

$("#foo").after("p");
Run Code Online (Sandbox Code Playgroud)

最后,insertAfter返回所有插入的元素,而.after()将返回调用它的上下文.

  • 不正确,`after()`将返回它被调用的上下文,在你的例子`$("#foo")之后.在("p")之后`将返回`$("#foo")`允许进一步链接命令. (2认同)

Dex*_*ter 14

到目前为止,所有的答案都很清楚,因为泥;-)(所以我也会捅它!)

如果你从这个Html开始:

<p id="pOne">Para 1</p>
<p id="pTwo">Para 2 <span id="sMore">More</span></p>
Run Code Online (Sandbox Code Playgroud)

匹配标记插入一些内容后:

$("p")                       // Match all paragraph tags
    .after("<b>Hello</b>");  // Insert some new content after the matching tags
Run Code Online (Sandbox Code Playgroud)

最终结果是:

<p id="pOne">Para 1</p><b>Hello</b>
<p id="pTwo">Para 2 <span id="sMore">More</span></p><b>Hello</b>
Run Code Online (Sandbox Code Playgroud)

另一方面,InsertAfter移动所选元素之后已存在于DOM上的一个或多个元素(实际上,此方法可称为MoveAfter):

$("#sMore")                    // Find the element with id `sMore`
    .insertAfter("#pOne");     // Move it to paragraph one
Run Code Online (Sandbox Code Playgroud)

导致:

<p id="pOne">Para 1</p><span id="sMore">More</span>
<p id="pTwo">Para 2</p>
Run Code Online (Sandbox Code Playgroud)

  • -1表示不正确.如果只有一个目标元素,则两种方法都会移动元素,如果有多个目标元素,则创建克隆. (3认同)

Haz*_*m_M 12

( 在那之后 ):

$('selector').after('new_content');
$('selector').before('new_content');
Run Code Online (Sandbox Code Playgroud)

while(insertAfter&insertBefore):

$('new_content').insertAfter('selector');
$('new_content').insertBefore('selector');
Run Code Online (Sandbox Code Playgroud)