Добавьте динамическую строку после статической строки, затем удалите статическую строку одним событием клика

У меня были проблемы с этим в последнее время, я использую этот код и отлично работаю для меня.

var data = 'Peter';

db.User.find({'name' : new RegExp(data, 'i')}, function(err, docs){
    cb(docs);
});

Используйте прямо /Peter/i, но я использую '/'+data+'/i' и не работаю для меня.

0
задан BarclayVision 27 February 2019 в 15:58
поделиться

1 ответ

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

$(".item-row:last").after("<tr><td></td></tr>");

на

var lastRow = $(".item-row:last");
lastRow.after("<tr><td></td></tr>");
lastRow.remove();

lastRow будет оцениваться на первая строка, поэтому не будет изменена на «теперь последняя строка элемента» после добавления другой строки элемента. Если бы вы сделали $(".item-row:last").remove(), он удалил бы вновь добавленную строку.


Если вы добавляете несколько строк, сохраните эту последнюю строку ранее, например:

var lastRow = $(".item-row:last");
$.each(data, function(i, e) {
    $(".item-row:last").after("<tr><td></td></tr>");
});
lastRow.remove();    

на этот раз, $(".item-row:last") необходимо внутри цикла, чтобы добавить данные в правильном порядке - если вы использовали lastRow.after, он будет добавлен в обратном порядке.

Существуют способы повысить эффективность кода (например, добавить все строки в одном приложении).


Возможно, более простой альтернативой является пометка шаблона / заполнителя / статической строки, чтобы ее можно было идентифицировать и удалить, например:

<tr class="item-row template-row">...

затем:

$.each(data, function(i, e) {
    $(".item-row:last").after("<tr><td></td></tr>");
});
$(".template-row").remove();
0
ответ дан freedomn-m 27 February 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: