AJAX第二次调用不起作用

时间:2017-09-15 18:30:51

标签: javascript jquery ajax

我正在尝试做一个简单的投票按钮,但每次重新加载每个帖子只能工作一次。

应该如何运作: 点击“+” - >更新查询(在django中) - >重新加载div(将“+”更改为“ - ”) - >允许单击“ - ”以撤消upvote

我第一次投票后显示“ - ”按钮但是当我点击它时,没有任何反应。它仅在我点击“F5”并重新加载页面时才有效。

控制台中没有错误。

        ... some django scripts to check which button should be displayed ...

         <span class="upvote"><span postId="{{post.id}}" class="vote" href="upvote/{{post.id}}">+</span></span>

         <span class="downvote"><span postId="{{post.id}}" class="vote" href="downvote/{{post.id}}">-</span></span>
         ...

        $(document).ready(function(){
          $(".vote").click(function(e){
          href = $(this).attr("href");
          postId = $(this).attr("postId");
          $.ajax({
                url: href,
                success: function() {
                    $("#post-"+postId+" >header").load(location.href+ " #post-"+postId+">header>*");
                },
           });
        });

“postId”和“href”属性已正确填写

1 个答案:

答案 0 :(得分:2)

根据您发布的代码,问题是什么并不明显,但我猜测}在点击{{1}后添加到DOM 中}。如果是这种情况,那么您的问题是,当该代码首次在页面加载时执行时,您只将<span>-</span>绑定到DOM中的<span>+</span>元素。您可以通过使用事件委派将事件处理程序绑定到静态父元素并对来自与您的选择器匹配的子项的任何事件进行操作来解决此问题:

$('.vote').on('click'...