取消Javascript间隔警报

时间:2015-04-23 21:50:05

标签: javascript php jquery

我有一个警报,每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>

我有点像代码的新手,不知道我在做什么。任何帮助,将不胜感激!谢谢

2 个答案:

答案 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()会更好。