我正在学习Django,所以我正在创建一个可以用布尔值跟踪书籍的应用程序,无论我是否将它们作为学习项目阅读。该模型是相对自我解释的书籍,标题和id以及布尔完成的"字段"。我希望有一个列出书籍的页面,每个书旁边都有一个按钮,它将把读状态改为True并立即使用AJAX / jQuery更新(最后是一个类似的未读错误按钮)。我无法使按钮工作。具体来说,我想我需要以某种方式为每一行分配一些id,以便jQuery知道它正在使用哪个项目。
对任何明显的错误道歉。我是网络编程的新手,我很遗憾不得不向大家请求帮助,但我一直试图找出一个解决方案,我已经做了几天了。
这是django模板片段:
{% for book in lib_dict.books %}
<tr>
<td>{{ book.title }}</td>
<td>{{ book.date_due }}</td>
<td id="book_completed_{{ book.id }}">{{ book.completed }}</td>
<td>
<button id="{{ book.id }}" data-bookid="{{ book.id }}" class="btn-mini btn-primary c" type="button">Complete</button>
</td>
</tr>
{% endfor %}
views.py:
def complete_book(request):
context = RequestContext(request)
book_id = None
if request.method == 'GET':
book_id = request.GET['book_id']
if book_id:
book = Book.objects.get(id=int(book_id))
if book:
book.completed = True
book.save()
return HttpResponse(book.completed)
jQuery代码 - 我想象错误在这里
$('.btn-mini btn-primary c').click(function(){
var bookid;
bookid = $(this).attr("data-bookid");
$.get('/libco/complete_book/', {book_id: bookid}, function(data){
var bookstring = '#book_completed_' + bookid;
$(bookstring).html(data); \\trying to update the completed table cell
$('#bookid').hide(); \\trying to hide the button
});
});
请注意,所有连接都可以正常工作。如果我只为具有专用id的单行创建此按钮,并在jQuery的第一行使用适当的#-tag,它可以工作,但是我在泛化时遇到了问题。也许&#34;。&#34;在第一行中获取课程的方法是什么?
另外,我非常想自学,所以如果有这方面的任何好资源,请告诉我。我开始研究官方jQuery教程,但我很快就看了一下,似乎没什么关系。
谢谢大家!
答案 0 :(得分:0)
改变这个:
$('.btn-mini btn-primary c')
为:
$('.btn-mini.btn-primary.c')