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 自动完成对第一个按键事件不起作用(源是一个数组)
嵌入在对象元素中的 SVG 上的鼠标指针悬停/jquery 单击事件不起作用