Я пробовал ваш код, и он работал нормально. кстати, в ваших примерах отсутствуют # в $ ('# hello-id') и $ ('# insert2'), посмотрите, не в этом ли ваша проблема ...
$("body").append($("<div id='hello-id'>Hello</div>"));
$('#hello-id').insertBefore($('#insert2'));
$('#hello-id').remove();
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<div id='insert1'>
<div id='insert2'>
</div>
</div>
</body>
... Если проблема не в том, что "#", поэтому я заметил, что в вашем случае дублируется тег:
<div id='hello-id'></div>
Но в приведенном выше фрагменте кода он не дублируется и работает, возможно, это проблема с версией.
Но дело в том, что вы «не можете» иметь 2 или более элементов с одинаковым «идентификатором». "в вашей DOM, поэтому, если у вас есть 2 элемента с одинаковым идентификатором, jquery удалит только один.
Это можно исправить двумя способами:
1 -Попробуйте другую версию jQuery, чтобы посмотреть, перестанет ли div id = 'hello-id' дублироваться, если да, ваш код, вероятно, будет работать.
2 - вы можете установить класс вместо id:
<div class='hello-class'></div>
Таким образом, когда вы удаляете "$ ('. Hello-class'). Remove ();", jquery удаляет все элементы с этим же классом.