Я думаю, вам понадобятся «делегированные события», чтобы можно было обрабатывать клики по элементам, которые не существовали, когда был объявлен исходный обработчик событий. Обычно обработчик событий присоединяется только к тем элементам, которые действительно присутствуют, и соответствуют селектору.когда обработчик создан.Очевидно, что ваши перемещенные элементы не соответствуют этим критериям.
При использовании делегированных событий эта проблема устранена, поскольку событие присоединено к элементу выше DOM, который, как вы знаете, будет существовать всегда.Затем вы сообщаете jQuery, что он фактически выполняет обратный вызов только в том случае, если выясняется, что основная цель события соответствует второму селектору (указанному в параметрах функции).Это оценивается во время возникновения события, а не при первом создании обработчика события.
Демо:
$(".low-filter-tags").on("click", "a.low-filter-label", function() {
$(this).detach().appendTo($('.low-filter-search'));
});
$(".low-filter-search").on("click", "a.low-filter-label", function() {
$(this).detach().appendTo($('.low-filter-tags'));
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="low-filter">
<div class="low-filter-tags">
<a class="low-filter-label">
Mobile
<i class="fa fa-times"></i>
</a>
<a class="low-filter-label">
Smartphone
<i class="fa fa-times"></i>
</a>
<a class="low-filter-label">
Laptop
<i class="fa fa-times"></i>
</a>
</div>
<div class="low-filter-search">
</div>
</div>
Подробнее см. https://api.jquery.com/on/ в разделе, озаглавленном «Прямые и делегированные обработчики событий».
PS Вы неТ действительно нужно клонировать, а затем удалить элемент.Вместо этого вы можете просто отсоединить его и повторно прикрепить в другом месте.Моя демонстрация отражает это изменение.