Вы можете попробовать это следующим образом:
Blade
Оберните свой код в каком-то держателе с классом status-enabled
, когда статус 1
. Установить специальные классы для элементов, которые будут видны или нет в соответствии со статусом.
<div class="holder @if($voucher->status == 1) status-enabled @endif">
<button class="btn btn-link p-0 change" type="submit" data-id="{{ $voucher->id }}">
<i class="fa fa-toggle-on text-success enabled-visible"></i>
<i class="fa fa-toggle-off text-muted enabled-invisible"></i>
</button>
<span class="badge badge-soft-success enabled-visible">
enable
</span>
<span class="badge badge-soft-pink enabled-invisible">
disbale
</span>
</div>
CSS
Установить правила:
.holder .enabled-visible {
display: none;
}
.holder .enabled-invisible {
display: inline-block;
}
.holder.status-enabled .enabled-visible {
display: inline-block;
}
.holder.status-enabled .enabled-invisible {
display: none;
}
JS
Переключение класса держателя при успешном изменении статуса.
$(".change").click(function() {
var id = $(this).data("id");
$.ajax({
url: "vouchers/change-status/" + id,
type: 'put',
dataType: "JSON",
data: {
"id": id,
"_method": 'put',
"_token": "{{ csrf_token() }}",
},
success: function() {
$(this).closest('.holder').toggleClass('status-enabled');
}
});
console.log("It failed");
});