jQuery: в чем разница между after () и insertAfter()
jQuery имеет .after()
метод, а также .insertAfter()
метод.
в чем разница между ними? Я думаю, что могу использовать .after()
вставка элемента после выбранного элемента (или элементов). Это правда? Что такое .insertAfter()
для чего?
11 ответов
они взаимные противоположности.
'после' вставляет аргумент после селектора.
'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>
после():
<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>
Они являются инверсиями друг друга. Как объясняется в jQuery документация:
Это:
$("p").insertAfter("#foo");
то же самое, что и это:
$("#foo").after("p");
и, наконец, insertAfter возвращает все вставленные элементы, тогда как .after () вернет контекст, который он вызывает.
все ответы до сих пор ясны, как грязь ; -) (так что я тоже попробую!)
если вы начинаете с этого HTML:
<p id="pOne">Para 1</p>
<p id="pTwo">Para 2 <span id="sMore">More</span></p>
после вставляет какой-нибудь новая содержание после соответствующих тегов:
$("p") // Match all paragraph tags
.after("<b>Hello</b>"); // Insert some new content after the matching tags
в итоге:
<p id="pOne">Para 1</p><b>Hello</b>
<p id="pTwo">Para 2 <span id="sMore">More</span></p><b>Hello</b>
С другой стороны, InsertAfter перемещение одного или нескольких элементов которые уже существуют на DOM после выбранных элементов (действительно, этот метод можно назвать MoveAfter):
$("#sMore") // Find the element with id `sMore`
.insertAfter("#pOne"); // Move it to paragraph one
в результате:
<p id="pOne">Para 1</p><span id="sMore">More</span>
<p id="pTwo">Para 2</p>
( после и до ):
$('selector').after('new_content');
$('selector').before('new_content');
while (insertAfter & insertBefore):
$('new_content').insertAfter('selector');
$('new_content').insertBefore('selector');
после (содержимое ) возвращает: jQuery
вставить содержимое после каждого из сопоставляемых элементов.
insertAfter (селектор ) возвращает: jQuery
вставить все сопоставленные элементы после другого, указанного, набора элементов.
также кажется, что передача атрибутов вставленного элемента не работает с ".insertAfter", но работает ".после"
работает:
$('#element').after('<p>Test</p>', { 'class': 'element_class', 'id': 'element_id' });
не работает:
$('<p>Test</p>', { 'class': 'element_class', 'id': 'element_id' }).insertAfter('#element');
* edit: кажется, он не работает с ".после" ни с тем, ни с другим ".appendTo"
здесь вы можете найти очень хороший учебник о том, как добавить контент на страницу с помощью методов jQuery prepend (), prependTo (), append (), appendTo (), before (), insertBefore (), after (), insertAfter (), wrap (), wrapAll() и wrapInner()
после() и Insertafter() оба добавляет элемент, основное изменение придет для цепочки
на after()
вы добавляете новый элемент после селектора, а затем, если вы используете цепочку для элемента, то любая функция, которую вы использовали, будет срабатывать на selector
не на вновь добавленном элементе, а наоборот будет выполнено в insertAfter()
в котором цепочка будет выполнена на вновь добавленном элементе для пример,
после() и InsertAfter()
HTML-код
<div class="after">After Div</div>
------------------------------------------------------
<div class="insertafter">Insert after div</div>
скрипт
var p='<p>Lorem ipsum doner inut..</p>';
$('.after').after(p)//chaining, performed on .after div not on p
.css('backgroundColor','pink');
//you can chain more functions for .after here
$(p).insertAfter('.insertafter')//chaining, performed on p not on .insertafter div
.css('backgroundColor','yellow');
// here you can chain more functions for newly added element(p)
см. выше selector
и contents
меняем в обеих функциях. То же самое будет применяться в следующем списке:
- before () vs insertBefore ()
- добавить () vs appendTo ()
- prepend () vs prependTo ()
- и после () vs insertAfter(), очевидно.
если вы хотите увидеть оба, производительность мудрая, то after()
быстрее insertAfter()
посмотреть после-vs-insertafter-производительность.
одна важная вещь, кроме некоторого синтаксиса, - это утечка памяти и производительность. insertafter более эффективен, чем insert, когда у вас есть тонны элементов dom. Поэтому предпочитайте insertafter вместо after.