javascript - 使用 Javascript 在 Like 上切换图标

标签 javascript python html django frontend

我制作了一个由 ajax 驱动的点赞按钮,并且定义了一个刷新文本的函数。现在我想更改它以将字体 awesome fa-heart-o 更新为 fa-heart,反之亦然。我该怎么做?看下面的代码

基础.html

<script>
                     $(document).ready(function(){
                            function updateText(btn, newCount, iconClass, verb){
                verb = verb || "";
                $(btn).html(newCount + '<i class="' + iconClass + '"></i>' + verb )  
                     btn.attr("data-likes", newCount)
                    }

                        $(".like-btn").click(function(e){
                        e.preventDefault()
                        var this_ = $(this)
                        var likeUrl = this_.attr("data-href")
                        var likeCount = parseInt(this_.attr("data-likes")) | 0
                        var addLike = likeCount + 1
                        var removeLike = likeCount - 1

                        if (likeUrl){
                             $.ajax({
                            url: likeUrl,
                            method: "GET",
                            data: {},
                            success: function(data){
                                console.log(data)
                                var newLikes;
                                if (data.liked){
                                    updateText(this_, addLike, "fa fa-heart")


                                } else {
                                    updateText(this_, removeLike, "fa fa-heart-o")


                                }
                            }, error: function(error){
                                console.log(error)
                                console.log("error")
                            }
                            })
                        }

                        })
                    })

         </script>

和按钮一样的html

<a class='like-btn' data-href='{{ comentario.get_api_like_url }}' data-likes='{{ comentario.likes.count }}' 
href='{{ comentario.get_like_url }}'>{{ comentario.likes.count }}

{% if request.user in comentario.likes.all %}
    <i class="fa fa-heart"></i>
{% else %}
    <i class="fa fa-heart-o"></i>
{% endif %}

感谢您的帮助。

最佳答案

在您的成功回调中,使用 updateText 来定义元素。

示例

success: function(data) {
    console.log(data)
    var newLikes;
    if (data.liked) {
        updateText(this_, addLike, "fa fa-heart")

    } else {
        updateText(this_, removeLike, "fa fa-heart-o")
        // remove one like
    }
}, error: function(error) {
    console.log(error)
    console.log("error")
}


function updateText(btn, newCount, iconClass, verb) {
    verb = verb || "";
    $(btn).html(newCount + '<i class="fa' + iconClass + '"></i>' + verb)
    btn.attr("data-likes", newCount)
}

关于javascript - 使用 Javascript 在 Like 上切换图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49690564/

相关文章:

javascript - 从 axios 请求捕获错误时重定向

javascript - 如何使用 AJAX 浏览网站?

javascript - 简单的 javascript 调用失败

python - 字符串中的递增数字

python - SCons:单个 SConscript 文件中的不同 variant_dir

python - 在 Python 中练习使用 "if ... else"有哪些好的编程问题?

javascript - 使用小部件工厂与 $.extend() 扩展小部件之间的区别?

html - 图像边框仅覆盖一半底部和一半右侧

html - 表格和 flexbox 布局混合的可滚动内容

html - IE10 上的悬停效果