我按照 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/