Jquery - 事件对新创建的元素不起作用

Posted

技术标签:

【中文标题】Jquery - 事件对新创建的元素不起作用【英文标题】:Jquery - event does not work on the newly created element 【发布时间】: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>

感谢您的提示

【问题讨论】:

【参考方案1】:

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

【讨论】:

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

以上是关于Jquery - 事件对新创建的元素不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jQuery事件处理程序.on()不起作用

jQuery:为啥我在 li 元素上的点击事件不起作用?

JQuery 自动完成对第一个按键事件不起作用(源是一个数组)

嵌入在对象元素中的 SVG 上的鼠标指针悬停/jquery 单击事件不起作用

jquery append 动态添加的元素事件on 不起作用的解决方案

具有动态内容的动态附加 iframe 在内容元素上写入 jquery 事件句柄不起作用