JQuery:在元素之前追加

Dev*_*997 11 html javascript jquery

使用JQuery我将一个div附加到一个名为的容器中.mobile-sub.我通过这样做来调用追加:

$('.s2_error').addClass("revive");
$('.revive').parent(".mobile-sub").append('<div>mydiv</div>');
Run Code Online (Sandbox Code Playgroud)

它工作正常但问题是它将div 放在标签之后,.s2_error而我需要将它放在之前,因此最终结果HTML将如下所示:

<div>mydiv</div>
<p class="s2_error">Error</p>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Raj*_*ddy 19

使用如下的各种选项

的insertBefore

$("<div>mydiv</div>").insertBefore('.mobile-sub .s2_error');
Run Code Online (Sandbox Code Playgroud)

或者在你的内部写另一个选择器 insertBefore

$("<div>mydiv</div>").insertBefore($('.revive').parent(".mobile-sub").find('.s2_error'));
Run Code Online (Sandbox Code Playgroud)

含义

$('thisElementShouldBe').insertBefore('thisElement');


前置

$('.revive').parent(".mobile-sub").prepend('<div>mydiv</div>');
Run Code Online (Sandbox Code Playgroud)

所以,<div>mydiv</div>将始终添加为第一个孩子mobile-sub


之前

 $('.revive').parent(".mobile-sub").find('.s2_error').before("<div>mydiv</div>");
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的详细回答 :) `prepend` 正是我所需要的。 (2认同)

Vij*_* Vj 7

你可以通过两种方式做到这一点:

  1. $(".s2_error").before("<div>mydiv</div>");
    
    Run Code Online (Sandbox Code Playgroud)
  2. 插入前

    $("<div>mydiv</div>").insertBefore(".s2_error");
    
    Run Code Online (Sandbox Code Playgroud)

两者都做同样的事情,但它们在语法上不同。