3

我正在使用 django

在身体块

<div id="tag_like">
    {% if liked %}
      <img id="unlike" title="unlike" src="{{ STATIC_URL }}pic/bad.png" />
    {% else %}
      <img id="like" title="like" src="{{ STATIC_URL }}pic/good.png" />
    {% endif %}
</div>

在 on_ready 脚本块中:

$.ajaxSetup({
  data: {csrfmiddlewaretoken: '{{ csrf_token }}'},
});
$('#like').click(function() {
   $.post("{% url 'likevideo' %}", {uid:{{ login_id }}, videoid:"{{ videoid }}"}, function(data,status){
      $('#tag_like').load(' #tag_like')
   });
});
$('#unlike').click(function() {
   $.post("{% url 'unlikevideo' %}", {uid:{{ login_id }}, videoid:"{{ videoid }}"}, function(data,status){
      $('#tag_like').load(' #tag_like')
   });
});

它在您第一次单击图像时工作正常。(转向另一张图像)但是当再次单击它时,不会发生 ajax 操作。我读

使用 JQuery 和 AJAX 在 Django 中刷新 div

jqgrid在使用trigger('reload')进行ajax调用后没有重新加载

将 jQueryui 按钮添加到动态添加的内容

但是还没有达成具体的解决方案......任何改变最小的解决方案?

4

3 回答 3

1

使用.on(),因为您正在加载DOM到 ID 为 的 div tag_like

$(document).on('click','#like',function(){
    //code here.
});
于 2013-04-23T07:01:10.217 回答
1

试试这个进行事件绑定:

$('#tag_like').on("click", "#like", function() {
   $.post("{% url 'likevideo' %}", {uid:{{ login_id }}, videoid:"{{ videoid }}"}, function(data,status){
      $('#tag_like').load(' #tag_like')
   });
});
$('#tag_like').on("click", "#unlike", function() {
   $.post("{% url 'unlikevideo' %}", {uid:{{ login_id }}, videoid:"{{ videoid }}"}, function(data,status){
      $('#tag_like').load(' #tag_like')
   });
});
于 2013-04-23T07:05:29.407 回答
0

这样做:

$('#tag_like').on("click", "#like", function() {
   $.post("{% url 'likevideo' %}", {uid:{{ login_id }}, videoid:"{{ videoid }}"}, function(data,status){
      $('#tag_like').load(' #tag_like')
   });
});

这种方法速度很快,因为它会阻止 jQuery 在您每次单击按钮时解析整个文档。

于 2013-04-23T07:01:32.827 回答