jQuery委托编码不起作用

时间:2014-03-21 20:15:14

标签: jquery delegation

我有这段代码,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>

加载到#existingComments的代码片段:

<div class="comment">
    <div data-cid="1" class="vote">
        <a title="+1 Vote" href="#"><span class="upVote">&nbsp;</span></a>
    </div>
</div>

2 个答案:

答案 0 :(得分:3)

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

以下是一个例子:

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

fiddle

答案 1 :(得分:0)

使用:

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

Fiddle