代码之家  ›  专栏  ›  技术社区  ›  llanato

jQuery委托编码无效

  •  0
  • llanato  · 技术社区  · 10 年前

    我有这段代码,Ajax调用工作得很好,显示得很好。我的问题是,如何让投票点击来处理通过Ajax调用加载到 #existingComments 当ajax调用在页面加载时启动时?

    <script>
    $(function() {
        var vData = {aid:2,rid:2};
    
        $.ajax(
        {
            url : "ajax.php",
            type: "POST",
            data : vData,
            success: function(data, textStatus, jqXHR)
            {
                $("#existingComments").html(data);
            },
            error: function (jqXHR, textStatus, errorThrown)
            {
                $("#existingComments").html("");
            }
        });
    
        // Disable links on vote buttons
        $(".vote").on("click", "a", function(e) {
            e.preventDefault();
            alert('yup');
        });
    });
    </script>
    

    加载内容的代码段 #现有注释 :

    <div class="comment">
        <div data-cid="1" class="vote">
            <a title="+1 Vote" href="#"><span class="upVote">&nbsp;</span></a>
        </div>
    </div>
    
    2 回复  |  直到 10 年前
        1
  •  3
  •   nderscore    10 年前

    问题是,您正在将委派的事件绑定到一个动态元素,该元素在AJAX响应返回之前并不存在。您应该将事件绑定到容器div。

    下面是一个示例:

    $("#existingComments").on("click", ".vote a", function(e) {
            e.preventDefault();
            alert('yup');
     });
    

    fiddle

        2
  •  0
  •   Eduardo Quintana    10 年前

    使用:

    $(document).on("click", ".vote a", function(e) {
                e.preventDefault();
                alert('yup');
            });
    

    Fiddle