jQuery:附加文本的函数问题

时间:2010-10-24 15:27:26

标签: jquery append

我试图在新闻主题的10篇帖子后发表“更多”。

对于这些新闻主题,有一些功能,你可以点击评论,然后出现你评论而不去另一个页面(AJAX调用)和其他一些这样的。这在前10个帖子中运行良好。

现在,当您点击这10个新闻主题底部的“更多”时,您将获得另外10个新闻主题。这里使用Ajax调用,它在10之后追加。 这也很好。

但是什么行不通(我的问题是那些点击功能我有:

$('.reply').click(function () {
    $('#replyWall'+$(this).attr('data-id')).toggle();
    document.getElementById('replyMsg'+$(this).attr('data-id')).focus();
});

$('.writeSComment').click(function() {
    $(this).hide();
    $('#replyToSComment'+$(this).attr('data-id')).toggle();
    document.getElementById('commentStatus'+$(this).attr('data-id')).focus();
});

不起作用。也许这是因为附加在网站加载之后,因为你首先点击“更多”,所以它找不到任何有这个id点击这个事件。

但是在附加的内容中,有这些id,以及所有内容,所以有没有办法让这些函数使用附加的东西,或者我该怎么做?

$('.more').live("click",function() {
    var ID = $(this).attr("id");
    if(ID) {
        $("#more"+ID).html('<img src="moreajax.gif" />');
        $.ajax({
            type:    "POST",
            url:     "misc/moreactivities.php",
            data:    "lastmsg="+ ID, 
            cache:   false,
            success: function(html) {
                $("#profileWall").append(html);
                $("#more"+ID).remove();
            }
        });
    }
});

2 个答案:

答案 0 :(得分:1)

将事件绑定到一组选定元素时,您只会影响DOM中当前存在的元素。这就是您使用.click执行的操作,.bind('click', function () { ... });$('.reply').live('click', function () { // ... }); 的别名。

要将事件绑定到所有匹配的元素以及与选择器匹配的新创建的元素,您需要使用.live

{{1}}

答案 1 :(得分:0)

为什么在jQuery中使用本机JS函数?

document.getElementById('commentStatus'+$(this).attr('data-id')).focus();

此外,如果您创建“在线播放”元素,请使用实时附加活动

$('.writeSComment').click(function() {

$('.writeSComment').live("click", function() {

它会影响每个元素,无论是加载dom还是以后都无关紧要。

//对不起,海报编辑时我还在写作