У меня были проблемы с этим в последнее время, я использую этот код и отлично работаю для меня.
var data = 'Peter';
db.User.find({'name' : new RegExp(data, 'i')}, function(err, docs){
cb(docs);
});
Используйте прямо /Peter/i
, но я использую '/'+data+'/i'
и не работаю для меня.
Вы можете сохранить ссылку на последнюю строку перед добавлением после нее, а затем удалить эту строку, например, изменить:
$(".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();