Для этого вам просто нужно позвонить removeClass('focus')
, чтобы удалить его из всех предыдущих элементов, когда вы устанавливаете класс на последний элемент, по которому щелкнули.
Также обратите внимание, что вы можете упростить и DRY повысить код, используя общие классы вместо сгенерированных во время выполнения атрибутов id
(которые обычно считаются антишаблоном), а также с помощью делегированных обработчиков событий. Попробуйте это:
$(function() {
let $list = $('#list');
$(".clone").click(function() {
let $clone = $('.item:first').clone();
$clone.find('.focus').removeClass('focus red blue');
$clone.appendTo($list);
});
$list.on('click', '.options button', function() {
$('.focus').removeClass('focus red blue');
var $button = $(this);
$button.addClass('focus ' + $button.data('color'));
});
});
#s_item { display: none; }
.category__list { display: flex; }
.focus { color: white; }
.blue { background-color: blue; }
.red { background-color: red; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="clone">Clone</button>
<div id="list">
<div class="item">
<div class="options">
<div class="category__item">
<div class="input--studio">
<button type="button" class="button" value="blue" data-filter="blue" data-rel="blue" data-type="item" data-color="blue">Blue</button>
</div>
</div>
<div class="category__item">
<div class="input--studio">
<button type="button" class="button" value="red" data-filter="red" data-rel="red" data-type="item" data-color="red">Red</button>
</div>
</div>
</div>
</div>
</div>