我正在使用 font-awesome SVG,之前我在范围方面遇到了一些问题,但现在我遇到了一个新问题 - 我在对另一个问题的评论中询问了这个问题,并被告知这是一个完全独立的问题。
这是我当前的代码:
$('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>
我正在使用 font-awesome CDN 版本 v5.0.8。
我已经尝试了几件事,例如直接编辑属性,如您在此处看到的,我发现这是从这个 StackOverflow 问题中执行此操作的正确方法,并且我还尝试编辑 SVG 对象的实际类( $(this) 在context ),但这也没有效果。
当我检查对象上的元素时,chrome 告诉我代码已激活,因为元素标签有点“闪烁”,但实际上并没有改变任何数据。
出了什么问题?