javascript - append.html jquery 与现有 html 的工作方式不同吗?

标签 javascript jquery html append

我有这样一种情况,我正在 append html 以加载更多帖子(分页),并且每个帖子都有一个回复链接, append 的 html 无法正常工作:

jquery 帖子:

$(function () {
    //More Button
    $('.more').live("click", function () {
        var ID = $(this).attr("id");
        if (ID) {
            $("#more" + ID).html('<img src="moreajax.gif" />');

            $.ajax({
                type: "POST",
                url: "ajax_more.php",
                data: "lastmsg=" + ID,
                cache: false,
                success: function (html) {
                    $("ul.statuses").append(html);
                    $("#more" + ID).remove();
                }
            });
        } else {
            $(".morebox").html('The End');
        }

        return false;

    });
});

html文件:

return <<<ENDOFRETURN
    <li>
        <a href="nano.com/$username"><img class="avatar" src="images/$picture" width="48" height="48" alt="avatar" /></a>
        <div class="tweetTxt">
            <strong><a href="nano.com/$username">$username</a></strong> $auto
            <div class="date">$rel</div>
            <a class ="reply" href="home.php?replyto=@$username&status_id=$id&reply_name=$username"> reply </a>
        </div>
        <div class="clear"></div>
    </li>
ENDOFRETURN;

回复链接jquery:

function insertParamIntoField(anchor, param, field) {
    var query = anchor.search.substring(1, anchor.search.length).split('&');

    for (var i = 0, kv; i < query.length; i++) {
        kv = query[i].split('=', 2);
        if (kv[0] == param) {
            field.val(kv[1]);
            return;
        }
    }
}

$(function () {
    $("a.reply").click(function (e) {

        insertParamIntoField(this, "status_id", $("#status_id"));
        insertParamIntoField(this, "reply_name", $("#reply_name"));
        insertParamIntoField(this, "replyto", $("#inputField"));

        $("#inputField").focus()
        $("#inputField").val($("#inputField").val() + ' ');

        e.preventDefault();
        return false; // prevent default action
    });
});

最佳答案

我在黑暗中拍摄,但听起来您没有在回复按钮上使用 .live() 事件。 append 到文档的任何新按钮都不会 append 您为其指定的点击事件。

因此,简而言之,确保任何动态加载并需要触发事件的按钮都使用“实时”事件绑定(bind)。

关于javascript - append.html jquery 与现有 html 的工作方式不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3759584/

相关文章:

javascript - ParsleyJS - 使用 data-parsley -`constraint` -message 进行本地化

jquery - 使用ajax mvc更新数据时如何更新表中的行

javascript - 在 Javascript 函数中使用元素 attr

html - 在移动设备上保持页面宽度相同

javascript - 在特定的 url 路径上重定向

javascript - 用数据库数据填充 radio 输入

javascript - 如何计算获取请求中数据的平均值?

javascript - 当 document.body 存在时执行 js

php - .post 里面的 jQuery.validator.addMethod 总是返回 false

javascript - 是否有任何替代 jQuery 函数来限制复选框类型选择?