2014-11-19 5 views
6

Я хочу добавить элементы после последнего. Мой текущий кодjQuery insert после последнего элемента

<div class="find"><div id="FirstElement"> /*First element loaded first */ </div><div> 

$('#AddNextElement' + id).click(function (e) { 
$('<div id="NextElement' + id +'">' + /*Add after the last element*/ + '</div>').insertAfter($("#FirstElement")); 

}

тока это только добавляет его после первого элемента:

Я хочу, чтобы добавить после последнего элемента каждый раз:

Я следовал этим ссылкам, а я не нашел то, что я ищу:

jQuery insertAfter last item

insertAfter specific element based on ID

jQuery: Add element after another element

Заранее благодарен !.

Как я установил его:..

$('#AddNextElement' + id).click(function (e) { 
$('<div id="NextElement"' + id +'>' + /*Add after the last element*/ + '</div>').insertAfter($("#FirstElement").parent().find('.Finder').last()); 

}

Я нашел .parent() найти ('найти') последнее(); затем вставить после последнего

+2

Почему вы не можете просто использовать [ '.append()'] (http://api.jquery.com/append/)? – Satpal

+1

поделитесь своим html слишком –

+0

'.append()' выполнит вашу работу –

ответ

11

Просто вам нужно last() метод

$('<div id="NextElement"' + id +'>' + /*Add after the last element*/ + '</div>') 
.insertAfter($('[id^="NextElement"]').last()); 
+0

Я попытался добавить .last(), и я все равно получаю тот же результат! – Norris

+0

Вы использовали [id^= ...? –

+0

Вы были правы относительно .last() ... Мне нужно, чтобы родитель нашел последний. Спасибо – Norris

0

Найти последний элемент в DOM, в вашем случае это будет «NextElementxx», а затем использовать «после»:

$('#NextElement2').after(..new stuff..); 
1

Как насчет добавления класса ко всем элементам? Это будет легче найти последнее:

$('.element-class:last').after('<div class="element-class" id="NextElement"' + id +'>' + /*Add after the last element*/ + '</div>'); 

Это, конечно, означает, что ваш первый элемент должен также иметь класс:

<div class="element-class" id="FirstElement"> /*First element loaded first */ </div> 
0

один способ для хранения последнего элемента.

<div id="FirstElement"> /*First element loaded first */ </div> 

var lastElement = $('#FirstElement'); 

$('#AddNextElement' + id).click(function (e) { 
    var element = $('<div id="NextElement"' + id +'>' + /*Add after the last element*/ + '</div>')); 
    element.insertAfter(lastElement); 
    lastElement = element; 
} 
1

HTML:

<div id="FirstElement"> First element loaded first </div> 

<div id="AddNextElement">Click me</div> 

JS:

var current = 0; 
$('#AddNextElement').click(function (e) { 
    var $el = (current == 0) ? $("#FirstElement") : $("#NextElement"+current); 
    current++; 
    $('<div id="NextElement' + current +'">Other element '+current+'</div>').insertAfter($el); 
}); 

Попробуйте себя на jsfiddle

0

Вы можете попробовать ниже код, он будет добавлен новый DIV после последнего «NextElement "div

JS код:

$(function(){ 
    $('#AddNextElementButton').on("click", function (e) { 
     var id = $("[id^='NextElement']").length ? $("[id^='NextElement']").length+1 : 1; 

     if($("[id^='NextElement']").length){ 
      $('<div id="NextElement'+ id +'">Add after the last element</div>').insertAfter($('[id^="NextElement"]').last()); 
     } else { 
      $('<div id="NextElement'+ id +'">Add after the last element</div>').insertAfter($('#FirstElement')); 
     } 
    }); 
}); 
Смежные вопросы