在ajax调用之后,jQuery keypress事件不会持久存在

时间:2013-12-20 00:11:00

标签: jquery load keypress posts

我正在尝试为墙贴(如facebook墙)创建简单的评论系统 我正在使用加载更多按钮,每次显示来自数据库的10个帖子“显示更多”按钮点击... 并且对于每个帖子都有评论textarea,添加评论我正在使用“输入按键功能”..

Keypress事件在ajax调用之前按照需要工作。

当用户激活加载更多帖子事件时,按键事件不再起作用,我检查了页面源代码,在页面上找不到帖子加载的源代码但这个帖子出现在浏览器中!!

添加评论功能:

    $(function() {
    $('.comment-form').keypress(function(event) {
        if (((event.keyCode || event.which) == 13) && !event.shiftKey) {
            // My ajax request here
                }
            });
    });

加载更多功能:

    $(function() {
        //More Button
        $('.more').live("click",function() {
            var ID = $(this).attr("id");
            if(ID) {
                $.ajax({
                    type: "POST",
                    url: "{$url}/ajax.php",
                    data: "loadmore="+ ID, 
                    cache: false,
                    success: function(html) {
                        $("#loadmore").append(html);
                    }
                });
            }
            return false;
        });
    });

HTML:

        <div class="message">
        $Message
        </div>
        <div class="commenter">
        <textarea id="$id" class="comment-form" type="text" placeholder="Write comment..." maxlength="1000"></textarea>
        </div>

我是初学者,请帮助:)

2 个答案:

答案 0 :(得分:1)

使用以下代码将keypress事件绑定到所有未来的html以及DOM中的当前html -

$('.comment-form').on('keypress', (function(event) {
    if (((event.keyCode || event.which) == 13) && !event.shiftKey) {
        // My ajax request here
    }
}));

答案 1 :(得分:0)

通过ajax加载的html内容不会附加事件,它是新的。附加活动不是追溯性的。您需要运行将事件附加到新HTML的函数。