【问题标题】:Jquery - event does not work on the newly created elementJquery - 事件对新创建的元素不起作用
【发布时间】:2011-01-21 18:52:34
【问题描述】:

我有一个简单的评论部分,用户可以在其中将 cmets 发布到其他用户的帖子 - 它的工作原理非常类似于 facebook 墙,用户可以在墙上写一些东西,其他人可以评论它。

所以我有这个表单,用户可以在其中输入任何内容,当他提交时 - 该信息被插入数据库并使用 Jquery 显示在表单下方的同一页面上。

现在每个帖子旁边都有一个评论链接。因此,当有人点击评论链接时 - 会出现一个小的 textarea 框,用户可以在其中输入内容并提交。

在以前发布的项目上一切都很好——除了新创建元素上的评论链接没有打开文本框区域。

搜索后,我发现了我实现的 Livequery 插件 - 但这似乎对我不起作用 - 看起来我做错了什么。

这是我之前的代码:


    $(".comment_button").click(function(){                           
                var element = $(this);
                var I = element.attr("id");
                //alert("in="+I);; 
                $("#slidepanel"+I).slideToggle(300);
                $(this).toggleClass("active");
                return false;
            });

我将其更改为使用 livequery:


   $('.comment_button').livequery('click',function(event) {                
                var element = $(this);
                var I = element.attr("id");
                //alert("in="+I);; 
                $("#slidepanel"+I).slideToggle(300);
                $(this).toggleClass("active");
                return false;
            });

这是评论链接

<a id="<?php echo $data['shopping_id']?>" class="comment_button" href="<?php echo $data['shopping_id']?>">Comment</a>

感谢您的提示

【问题讨论】:

    标签: jquery-plugins jquery livequery


    【解决方案1】:

    您不需要livequery,只需live。将livequery 替换为live 应该可以正常工作。

    【讨论】:

    • 谢谢 Skilldrick - 我尝试了 live - 它仍然没有做任何事情 - 正在调用事件 - 因为警报显示并显示正确的 ID - 但是 $("#slidepanel"+ I).slideToggle(300);似乎没有工作谢谢
    • 显示的id是什么?我认为问题可能出在$("#slidepanel" + I) - 看起来你可能需要一个空间。
    • 显示的ID是最后一条评论的ID。滑动面板代码很好,因为它可以工作 - 当您刷新页面并单击上一篇文章的“评论”链接时。它不仅适用于新创建的元素。我们是否也需要重新绑定滑动面板
    • 你能发布显示的id吗?我不知道到底发生了什么,但如果I#slidepanel 的子元素,那么jQuery 选择器应该是"#slidepanel #" + I`
    • @Skilldrick 懒得帮助他,因为他懒得接受问题
    猜你喜欢
    • 2023-03-21
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多