.append(), prepend(), .after() 和 .before()

IT技术 javascript jquery append prepend jquery-after
2021-02-09 19:49:00

我非常精通编码,但有时我会遇到似乎做基本相同事情的代码。我的主要问题是,你为什么要使用.append()宁可.after()或反之亦然的诗句?

我一直在寻找并且似乎无法找到关于两者之间差异以及何时使用和何时不使用它们的明确定义。

一个比另一个有什么好处,为什么我要使用一个而不是另一个?有人可以向我解释一下吗?

var txt = $('#' + id + ' span:first').html();
$('#' + id + ' a.append').live('click', function (e) {
    e.preventDefault();
    $('#' + id + ' .innerDiv').append(txt);
});
$('#' + id + ' a.prepend').live('click', function (e) {
    e.preventDefault();
    $('#' + id + ' .innerDiv').prepend(txt);
});
$('#' + id + ' a.after').live('click', function (e) {
    e.preventDefault();
    $('#' + id + ' .innerDiv').after(txt);
});
$('#' + id + ' a.before').live('click', function (e) {
    e.preventDefault();
    $('#' + id + ' .innerDiv').before(txt);
});
6个回答

看:


.append()在放数据的元素内部last index
.prepend()放预先挂起ELEM在first index


认为:

<div class='a'> //<---you want div c to append in this
  <div class='b'>b</div>
</div>

.append()执行它看起来就像这样:

$('.a').append($('.c'));

执行后:

<div class='a'> //<---you want div c to append in this
  <div class='b'>b</div>
  <div class='c'>c</div>
</div>

在执行中摆弄 .append() 。


.prepend()执行它看起来就像这样:

$('.a').prepend($('.c'));

执行后:

<div class='a'> //<---you want div c to append in this
  <div class='c'>c</div>
  <div class='b'>b</div>
</div>

在执行中摆弄 .prepend() 。


.after()将元素放在元素之后 将元素
.before()放在元素之前


使用后:

$('.a').after($('.c'));

执行后:

<div class='a'>
  <div class='b'>b</div>
</div>
<div class='c'>c</div> //<----this will be placed here

在执行中摆弄 .after() 。


之前使用:

$('.a').before($('.c'));

执行后:

<div class='c'>c</div> //<----this will be placed here
<div class='a'>
  <div class='b'>b</div>
</div>

在执行中摆弄 .before() 。


@joraid 根据您的评论更新了答案,并在执行中使用了一些 js 小提琴链接。
2021-03-15 19:49:00
很好的解释,但如果我想加载外部 html 视图怎么办?像这样使用MVC:$("#viewPlaceHolder").append("/clients/RelationDropdown", {selected: selected });
2021-03-17 19:49:00
好的!我还可以问一下'$(element).append(content)' 和 '$(content).appendTo(target)' 之间的区别等等吗?(我不想在此开始一个新线程!)
2021-03-23 19:49:00
@Djeroen.append()不会以这种方式加载它。你必须使用.load(url, params).
2021-04-11 19:49:00

此图片显示在下面给出了一个清晰的认识,并显示之间准确的区别.append().prepend().after().before()

jQuery 信息图

您可以从图像中看到.append().prepend()并将新元素作为元素(棕色)添加到目标中。

.after().before()添加新的元素作为同级元素(黑色彩色)的目标。

这是一个DEMO,以便更好地理解。


编辑:这些函数的翻转版本:

jQuery 插入信息图,以及函数的翻转版本

使用此代码

var $target = $('.target');

$target.append('<div class="child">1. append</div>');
$target.prepend('<div class="child">2. prepend</div>');
$target.before('<div class="sibling">3. before</div>');
$target.after('<div class="sibling">4. after</div>');

$('<div class="child flipped">or appendTo</div>').appendTo($target);
$('<div class="child flipped">or prependTo</div>').prependTo($target);
$('<div class="sibling flipped">or insertBefore</div>').insertBefore($target);
$('<div class="sibling flipped">or insertAfter</div>').insertAfter($target);

在这个目标上:

<div class="target">
    This is the target div to which new elements are associated using jQuery
</div>

因此,尽管这些函数翻转了参数顺序,但每个函数都会创建相同的元素嵌套:

var $div = $('<div>').append($('<img>'));
var $img = $('<img>').appendTo($('<div>'))

...但它们返回不同的元素。这对于方法链很重要

我一直在参考你的信息图。希望您喜欢添加翻转功能。
2021-03-29 19:49:00
很容易理解的图片。:)
2021-03-31 19:49:00
点赞!如果我问那图片中的 appendTo 和 prependTo 呢?请更新。
2021-04-07 19:49:00

append()&prepend()用于在元素内部插入内容(使内容成为其子元素)而after()&before()在元素外部插入内容(使内容成为其兄弟)。

最好的方法是去文档。

.append() 对比 .after()

  • . append(): 将参数指定的内容插入匹配元素集中每个元素的末尾
  • . after():在匹配元素集中的每个元素之后插入由参数指定的内容。

.prepend() 对比 .before()

  • prepend(): 将参数指定的内容插入匹配元素集中每个元素的开头
  • . before():在匹配元素集合中的每个元素之前插入由参数指定的内容。

因此,append 和 prepend 是指对象的子级,而 after 和 before 是指对象的兄弟级。

.append()and.after().prepend()and之间有一个基本的区别.before()

.append()添加参数元素选择元素的标签内的最末端,而.after()添加参数元素的元素的标签之后

该反之亦然是.prepend().before()

小提琴