jquery - 为什么我的点赞按钮只适用于第一篇文章?

标签 jquery python django

我按照 tangowithdjango 中的说明进行操作在我的论坛应用程序中添加“喜欢”按钮。

html 文件和 JavaScript:

<script>
$(document).ready(function(){
  $("#upvote").click(function(){
    var postid;
    postid = $(this).attr("data-r-id");
    $.get('/upvote/', {post_id: postid}, function(data){
               $('#like_count').html(data);
              
    });
  });
});
</script>
<a id="upvote" data-r-id="{{r.id}}" class="label-info label pull-right">赞<div id="like_count">{{r.upvotes}}</div></a>

View .py

def upvote(request):
    post_id = None
    if request.method == 'GET':
        post_id = request.GET['post_id']
    votes = 0
    if post_id:
        p = post.objects.get(id=post_id)
        if p :
            votes = p.upvotes + 1
            p.upvotes = votes
            p.save()
    return HttpResponse(votes)

url.py

urlpatterns = patterns(
    url(r'^upvote/$', 'upvote', name='upvote'),
)

当点击#upvote按钮时,#like_count增加1。但是,它仅适用于第一篇文章。如果我点击其余帖子,我根本没有得到任何回复。

最佳答案

我建议您将upvote作为类而不是id,因为id引用文档中的唯一元素。

$(document).ready(function(){
  $(".upvote").click(function(){
    var postid;
    postid = $(this).attr("data-r-id");
    $.get('/upvote/', {post_id: postid}, function(data){
               $('#like-count-' + postid).html(data);

    });
  });
});

你的 html 应该看起来像,

<a data-r-id="{{r.id}}" class="label-info label pull-right upvote">赞<div id="like-count-{{r.id}}">{{r.upvotes}}</div></a>

关于jquery - 为什么我的点赞按钮只适用于第一篇文章?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36145373/

相关文章:

javascript - 使用 jQuery 更改 div 的数据深度属性

python - 如何卸载 spf13 Vim 发行版?

python - 语法错误 : invalid syntax inside map(lambda (x, y)

python - tensorflow 错误 : Shape must be rank 0 but is rank 1 for 'cond_1/Switch'

python - create() 需要 1 个位置参数但给出了 2 个? Django

JavaScript 答案

javascript - 如何从下拉列表中删除不需要的选项值?

javascript - jquery - 如何在 ID 选择器中看到通配符

django - 群发隐藏收件人的邮件

django - 如何处理 'str' object has no attribute '_meta' 错误?