Как сделать так, чтобы hover эффект работал только на один объект?
А зачем вообще тут JS, можно через таблицу стилей просто применять стили для дочерних элементов наведённых блоков:
.block:hover .price {
   ......
}
.block:hover .price span {
   ......
}
.block:hover button.buy {
   ......
}
это $('.price') выбирает все элементы с классом price на странице, тебе нужно искать такой элемент только внутри того на который навёл, что-то типа $(this). find('.price')