3

私はジャンゴを使用しています

ボディブロックには

<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 を更新する

トリガー( 'reload')を使用してajax呼び出しを行った後、jqgridがリロードしない

動的に追加されたコンテンツへの jQueryui ボタンの追加

しかし、具体的な解決策はまだありません...最小限の変更で解決策はありますか?

4

3 に答える 3

1

の ID で div に.on()ロードしているため使用します。DOMtag_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 に答える