我正在使用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动作。我读了
Refresh a div in Django using JQuery and AJAX
jqgrid not reloading after making a ajax call using trigger('reload')
Adding jQueryui Buttons to dynamically added content
但尚未找到具体的解决方案...... 有最小变化的任何解决方案?
答案 0 :(得分:1)
使用.on()
,因为您要将DOM
加载到ID为tag_like
的div。
$(document).on('click','#like',function(){
//code here.
});
答案 1 :(得分: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')
});
});
答案 2 :(得分:0)
这样做:
$('#tag_like').on("click", "#like", function() {
$.post("{% url 'likevideo' %}", {uid:{{ login_id }}, videoid:"{{ videoid }}"}, function(data,status){
$('#tag_like').load(' #tag_like')
});
});
这种方法很快,因为每次单击按钮时它都会阻止jQuery解析整个文档。