Epi*_*pik 193 javascript jquery append prepend jquery-after
我非常精通编码,但偶尔我会遇到似乎基本相同的代码.我在这里的主要问题是,你为什么要使用.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);
});
Run Code Online (Sandbox Code Playgroud)
Jai*_*Jai 426
.append()在把一个元件的内部数据last index和
.prepend()放预谋ELEM在first index
<div class='a'> //<---you want div c to append in this
<div class='b'>b</div>
</div>
Run Code Online (Sandbox Code Playgroud)
.append()执行它看起来就像这样:$('.a').append($('.c'));
Run Code Online (Sandbox Code Playgroud)
执行后:
<div class='a'> //<---you want div c to append in this
<div class='b'>b</div>
<div class='c'>c</div>
</div>
Run Code Online (Sandbox Code Playgroud)
.prepend()执行它看起来就像这样:$('.a').prepend($('.c'));
Run Code Online (Sandbox Code Playgroud)
执行后:
<div class='a'> //<---you want div c to append in this
<div class='c'>c</div>
<div class='b'>b</div>
</div>
Run Code Online (Sandbox Code Playgroud)
.after()在元素将元素
.before()放在元素之前放置元素
$('.a').after($('.c'));
Run Code Online (Sandbox Code Playgroud)
执行后:
<div class='a'>
<div class='b'>b</div>
</div>
<div class='c'>c</div> //<----this will be placed here
Run Code Online (Sandbox Code Playgroud)
$('.a').before($('.c'));
Run Code Online (Sandbox Code Playgroud)
执行后:
<div class='c'>c</div> //<----this will be placed here
<div class='a'>
<div class='b'>b</div>
</div>
Run Code Online (Sandbox Code Playgroud)
VSr*_*i58 125
下面显示此图像给出一个清晰的认识,并显示之间准确的区别.append(),.prepend(),.after()和.before()

您可以从形象,看到.append()和.prepend()添加新的元素作为子元素(棕色)的目标.
而.after()和.before()添加新的元素作为同级元素(黑色彩色)的目标.
这是一个更好理解的DEMO.
编辑:这些功能的翻转版本:
使用此代码:
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);
Run Code Online (Sandbox Code Playgroud)
在这个目标上:
<div class="target">
This is the target div to which new elements are associated using jQuery
</div>
Run Code Online (Sandbox Code Playgroud)
因此,虽然这些函数会翻转参数顺序,但每个函数都会创建相同的元素嵌套:
var $div = $('<div>').append($('<img>'));
var $img = $('<img>').appendTo($('<div>'))
Run Code Online (Sandbox Code Playgroud)
......但它们会返回不同的元素.这对方法链很重要.
他们每个人都没有额外的优势。这完全取决于您的情况。下面的代码显示了它们的区别。
Before inserts your html here
<div id="mainTabsDiv">
Prepend inserts your html here
<div id="homeTabDiv">
<span>
Home
</span>
</div>
<div id="aboutUsTabDiv">
<span>
About Us
</span>
</div>
<div id="contactUsTabDiv">
<span>
Contact Us
</span>
</div>
Append inserts your html here
</div>
After inserts your html here
Run Code Online (Sandbox Code Playgroud)
<div></div>
// <-- $(".root").before("<div></div>");
<div class="root">
// <-- $(".root").prepend("<div></div>");
<div></div>
// <-- $(".root").append("<div></div>");
</div>
// <-- $(".root").after("<div></div>");
<div></div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
282140 次 |
| 最近记录: |