Jquery - 事件不适用于新创建的元素

发布于 2024-08-22 19:17:32 字数 1318 浏览 6 评论 0原文

我有一个简单的评论部分,用户可以在其中向其他用户的帖子发表评论 - 它的工作原理与 Facebook 墙的风格非常相似,用户可以在墙上写一些东西,其他人可以对其发表评论。

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

现在,每个帖子旁边都有一个评论链接。因此,当有人单击评论链接时,会出现一个小文本区域框,用户可以在其中键入内容并提交。

之前发布的项目的一切都很好 - 除了新创建的元素上的评论链接不会打开文本框区域。

搜索后,我发现了我实现的 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>

感谢您的提示

I have a simple comment section where users can post comments to another users post - It works pretty much in the style of facebook wall where a user can write something on the wall and other can comment on it.

So I have this form where the user can enter anything and when he submits - that information is inserted in the database and shown on the same page below the form using Jquery.

Now each of these post have a comment link next to it. So when someone clicks on the comment link - a small textarea box appears where the user can type something and submit.

Everything works great on the previously posted items- except that the comment link on the newly created element does not open up the textbox area.

After searching I came across the Livequery plugin which I implemented - but that doesn't seem to work for me - looks like I'm doing something wrong.

This is the code that I had previously:


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

I changed this to use 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;
            });

This is the link for comment

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

Thanks for your tips

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

素年丶 2024-08-29 19:17:32

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

You don't need livequery, just live. Replace livequery with live and it should work fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文