【发布时间】:2020-12-21 23:03:37
【问题描述】:
我有一个爱心按钮(用字体真棒图标制作),每次用户点击它时都会改变,但当我点击它时,它只会在我重新加载页面时从全实心变为空。
要更改图标,我使用的方法是在每次点击时更改字体真棒类
负责按钮行为的确切部分
if (previous_action == 'like')
{
$(event.target).find("i").removeClass("far fa-heart").addClass("fas fa-heart")
}
else {
$(event.target).find("i").removeClass("fas fa-heart").addClass("far fa-heart")
}
完整代码
$('a.like').on('click', function(event){
event.preventDefault();
event.stopPropagation();
event.stopImmediatePropagation();
$.post('{% url "posts:post_like" %}',
{
id: $(this).data('id'),
action: $(this).data('action')
},
function(data){
if (data['status'] == 'ok')
{
var previous_action = $(event.target).data('action');
// toggle data-action
$(event.target).data('action', previous_action == 'like' ?
'unlike' : 'like');
// toggle class to change icon
if (previous_action == 'like')
{
$(event.target).find("i").removeClass("far fa-heart").addClass("fas fa-heart")
}
else {
$(event.target).find("i").removeClass("fas fa-heart").addClass("far fa-heart")
}
// update total likes
var previous_likes = parseInt($(event.target).closest("div").find("span.count .total").text());
$(event.target).closest("div").find("span.count .total").text(previous_action == 'like' ? previous_likes + 1 : previous_likes - 1);
}
}
);
});
html 提取
{% for post in posts %}
<a href="{{ post.get_absolute_url}}" class="text-dark">
<div class="d-flex bg-white pt-3 pl-2">
<div class=" p-2 mb-2">
{% with total_likes=post.users_like.count users_like=post.users_like.all %}
<span class="count">
<span class="total">{{ total_likes }}</span> like{{ total_likes|pluralize }}
</span>
<p>
<span class="mr-5 ">
<a href="" data-id="{{ post.id }}"
data-action="{% if request.user in users_like %}un{% endif %}like"
class="like">
{% if request.user not in users_like %}
<i class="far fa-heart"></i>
{% else %}
<i class="fas fa-heart"></i>
{% endif %}
</a>
</span>
</p>
{% endwith %}
</div>
</div>
</a>
{% endfor %}
链接提取
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.1.0/css/v4-shims.min.css">
【问题讨论】:
-
方法
addClass和removeClass需要一个类名作为参数。您正在提供 jQuery 对象。 -
我已经更改了它,但它的行为仍然相同
-
在后续调用中是
data['status'] == 'ok'吗? -
只有那个
-
嗨,请显示你的html代码