我有一个警报,每10毫秒触发一次,并检查PHP文件中的变量。如果存在此变量则会触发警报,但是当关闭警报时再次出现10毫秒,并且一次又一次......我发现以下代码尝试取消间隔但它不起作用,任何人都可以帮助/
以下是警报脚本:
<script>
var timerID = 0;
var callme=function () {
$('#alertDiv').load('checkLive.php');
};
$(function(){
timerID = setInterval(callme,1000);});
</script>
这是取消js:
<script>
$('#alertDiv').on('closed.bs.alert', function () {
$('timerID').blur(function () {
clearInterval(timerID);
});
});
</script>
我有点像代码的新手,不知道我在做什么。任何帮助,将不胜感激!谢谢
答案 0 :(得分:2)
如果我理解正确,当您的自定义事件closed.bs.alert
被触发时,您想要取消您的计时器。看来你的blur
事件处理程序是无关紧要的。
您的取消活动应该是:
$('#alertDiv').on('closed.bs.alert', function () {
clearInterval(timerID);
});
答案 1 :(得分:1)
当使用事件时,这些事件会冒泡 - 从节点到Document元素。这意味着您无法在不是父母的元素上收听事件。 我们以此为例:
<div class="parent-element-1">
<div class="element-1"></div>
</div>
<div class="parent-element-2">
<div class="element-2"></div>
</div>
在此示例中,如果element-2触发事件,则事件将从element-2冒泡到parent-element-2。但是,parent-element-1和element-1将不会意识到它。
这就是说,你需要从另一个父母那里听这个元素。 为了确保事件被触发:
$(document).on('closed.bs.alert', function () {
clearInterval(timerID);
});
但是,我建议在你的情况下使用jQuery API发出一个AJAX请求,它允许你处理更好的成功/错误等。.load()
当你想从提供的东西加载东西时很好URL并将其放在调用元素中。否则,.ajax()
会更好。