Я использую SVG с потрясающим шрифтом, у меня были проблемы с scope ранее, но теперь у меня возникла новая проблема - я спросил об этой проблеме в комментарии к другому моему вопросу, и мне сказали, что это совершенно отдельная проблема.
Вот мой текущий код:
$('body').on('click','.switchButton', function(){
$(this).attr('data-prefix', 'fas').attr('data-icon', 'spinner').addClass('fa-pulse');
$.ajax({
url: 'tasks/update_table.php',
type: 'post',
data: { "uid": $(this).attr('data-uid')},
context: this,
success: function(response) {
$(this).attr('data-icon', 'check-square').removeClass("fa-pulse");
if(response == 1) {
$(this).attr('data-prefix', 'far');
} else {
$(this).attr('data-prefix', 'fas');
}
console.log(this);
}
});
});
(Примечание: даже метод removeClass () выше не работает, кажется, что элемент нельзя изменить изнутри функции успеха?)
Теперь, когда я делаю console.log(this)
, я получаю некоторые результаты, которые мне кажутся странными.
Когда я впервые нажимаю на значок, console.log()
я получаю следующий результат:
<svg class="svg-inline--fa fa-square fa-w-14 fa-lg switchButton fa-pulse" data-uid="1" aria-hidden="true" data-prefix="fas" data-icon="check-square" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg="">
И каждый раз после этого всегда получаю такой результат:
<svg class="svg-inline--fa fa-spinner fa-w-16 fa-lg switchButton fa-pulse" data-uid="1" aria-hidden="true" data-prefix="far" data-icon="check-square" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg="">
И значок никогда не меняется на реальной странице, он просто остается прядильщиком. Я действительно не понимаю, что здесь не так. Кажется, это должно быть так просто, но у меня это не работает.
Элемент изначально загружается на страницу как:
<i data-uid="<?=$task['uid'];?>" class="far fa-square fa-lg switchButton"></i>
и я использую отличный шрифт CDN версии v5.0.8.
Я пробовал несколько вещей, например, редактирование атрибутов напрямую, как вы видите здесь, и обнаружил, что это правильный способ сделать это из этот вопрос StackOverflow, и я также попытался отредактировать фактический класс объекта SVG ($ (this) в контексте), но у него также не было эффект.
Когда я проверяю элемент объекта, хром сообщает мне, что код активирован, потому что тег элемента вроде «мигает», но на самом деле никакие данные не меняются.
Что не так?