Поэтому у меня есть мнение, что есть делает HTML, который выглядит следующим образом:Как добавить/добавить этот div как последний ребенок всех детей, а не первый?
Что происходит сейчас, когда пользователь добавляет новый комментарий, он будет добавлен в верхней части этого списка, т.е. div.social-comment
, который подсвечивается. Однако я хочу, чтобы он был добавлен после последнего в списке, а не как первый. Как мне это сделать?
Это то, что create.js.erb
выглядит следующим образом:
$(".question-<%= @comment.commentable.id %>").prepend("<%= j (render partial: 'comments/comment', locals: { comment: @comment}) %>");
Как я могу добиться того, чего я хочу?
Edit 1
Мой плохо, я не совсем понятно с оригинальным вопросом.
Я не могу просто использовать .append
, из-за наличия поля формы, которое в настоящее время находится в нижней части этого списка детей.
Если я использовать Append, это то, что модифицированный HTML выглядит следующим образом:
Обратите внимание на .row .question-46-new
появляется перед последним .social-comment
.
Так что в конечном итоге производить это:
Что, очевидно, что я не хочу.
Я хочу, чтобы новый комментарий отображался прямо над текстовым полем Write Comment
и в конце списка существующих комментариев.
Edit 2
Это то, что мой DOM дерево выглядит как после попытки предложение Pranav в:
Редактировать 3
После последней попытки из Pranav, эти являются результатами.
Я попытался это:
$(".question-<%= @comment.commentable.id %>").children(".social-comment").last().after("<%= j (render partial: 'comments/comment', locals: { comment: @comment}) %>");
Это хорошо работает, когда есть существующие комментарии, он просто добавляет к последней из существующих. Однако, когда комментариев нет, новый комментарий просто исчезает.
Вот изображение дерева DOM, когда нет комментариев:
Вот изображение дерева DOM после комментария был добавлен, используя выше .js.erb
:
Без изменений. Для чего это стоит, я также попробовал это с другим предложением:
$(".question-<%= @comment.commentable.id %> > .social-comment:last").after("<%= j (render partial: 'comments/comment', locals: { comment: @comment}) %>");
И я получаю подобное поведение. Он работает, когда есть существующие комментарии, но не работает, когда их нет.
Edit 4
Когда я использую :before
предложение от Pranav, это результат.
Это то, что мой комментарий раздел выглядит, когда я добавить один комментарий, когда раньше не было (обратите внимание на расстояние выключен и согласование с другими элементами DOM выглядит странно):
Тогда это то, что он выглядит, когда есть существующий комментарий (обратите внимание, как странно выглядит расклад):
Но если я обновить, это то, что он выглядит Лик е (который, как она должна выглядеть, но только не так, как он выглядит сразу после того, как комментарий добавляется):
Это справедливое предложение, но я не был ясно из моего первоначального вопроса. Обновите вопрос, чтобы узнать, что произойдет, когда я это сделаю. Короче говоря, это не сработает - по причинам, которые я объясняю в обновленном вопросе. – marcamillion
@marcamillion: ответ обновлен –
Мне нравится направление. По какой-то причине, на самом деле это не работает. Комментарий просто исчезает. Понятно, что он отправил правильно, он просто не обновляет DOM правильно. Идеи? – marcamillion