Javascript ClearInterval()不工作,谁知道为什么?
我正在通过以下代码更新用户帖子:Javascript ClearInterval()不工作,谁知道为什么?,javascript,php,jquery,html,css,Javascript,Php,Jquery,Html,Css,我正在通过以下代码更新用户帖子: var auto_refresh = setInterval(function() { $('.contenido-publicaciones') .load("refresh_p.php?search_user="+search_user).fadeIn(); }, 2500 ); //Which is working. 1:,refresh.p.php中的所有div每2.5秒加载一次 2:对于从refresh\u p.php刷新的
var auto_refresh = setInterval(function()
{
$('.contenido-publicaciones')
.load("refresh_p.php?search_user="+search_user).fadeIn();
}, 2500 ); //Which is working.
1:
,refresh.p.php中的所有
div每2.5秒加载一次
2:对于从refresh\u p.php
刷新的每个
,我都有一个textarea标签
3:当
刷新时,它也会刷新文本区域并防止用户键入
4:所有文本区域都有绿色类b_
我想在用户单击类为b_绿色的文本区域时clearInterval(auto_refresh)
,以便其他用户可以向该帖子发送评论
我尝试了以下方法:
$(.b_绿色”)。单击(函数(){
clearInterval(自动刷新);
});代码>//不工作,
继续刷新
$(“文本区域”)。单击(函数(){
clearInterval(自动刷新);
});代码>//仅当我单击页面顶部用于发送帖子的文本区域时有效,但当我单击b_类为绿色的文本区域时无效
$(此)。单击(函数(){
clearInterval(自动刷新);
});代码>//如果我单击b_绿色文本区域,但停止用户在页面上每次单击的间隔,我只想停止b_绿色文本区域单击,则此操作有效
我的代码有错误吗?任何帮助都将不胜感激。据我所知,您加载的内容包含您试图通过单击来处理的所有节点
如果是的话。有一个问题。因为每次获得更新时,都会松开单击处理程序,因为DOM已经更改。由于+您可能从以前的“不可访问”处理程序中出现内存泄漏,因此不会触发单击,因为在绑定它们时没有文本区域,或者其中的文本区域已被新文本区域替换。这些新文本区域没有连接onclick处理程序
您可以执行以下任一操作:
将onclick=“clearInterval(auto_refresh);”
添加到后端发送的文本区域的代码中,并获得如下结果:
<textarea onclick="clearInterval(auto_refresh);"></textarea>
您的var自动刷新分配的范围是什么?窗口是本地的还是全局的看起来您需要使用委派,因为正在动态添加.b_green
text区域。用于从静态父级委派事件。我还认为您遗漏了一些重要的代码。设置间隔计时器的第一个代码块具体在哪里?任何无法访问的代码的可能副本都会被垃圾收集,我建议你用谷歌搜索。如何使用设置的间隔和处理程序进行内存泄漏。你会非常惊讶的。
$(".contenido-publicaciones").on('click', 'textarea', function(){
clearInterval(auto_refresh);
});