Javascript 代码成倍增加,所有实例都在运行

Javascript 代码成倍增加,所有实例都在运行,javascript,jquery,Javascript,Jquery,我的网站的工作方式是,任何单击的链接都不会加载新页面,但会在名为“content”的div中触发.load()事件 一切都很好,但现在我遇到了一个小问题 在其中一个内容页上,我有以下代码: $('.count').each(function () { $this = $(this); countdown = setInterval(function(){ countnow = parseInt($('.remain', $this)

我的网站的工作方式是,任何单击的链接都不会加载新页面,但会在名为“content”的div中触发.load()事件

一切都很好,但现在我遇到了一个小问题

在其中一个内容页上,我有以下代码:

    $('.count').each(function () {
        $this = $(this);
        countdown = setInterval(function(){
            countnow = parseInt($('.remain', $this).html());
            $('.remain', $this).html(countnow-1);
        }, 1000);
        return false;
    });
代码是有效的。。。它工作得很好。但当我再次加载同一个页面时,代码似乎运行了两次,因为秒数一次减少2。然后,当我再次加载它时,它一次下降3秒。再次加载,每次下降4秒。我再加载几次,它下降得比我能读的快

我尝试为.count div提供它们自己的唯一id(.remaine div嵌套在.count div中),即使在随后加载页面时,id仍然完全不同,这并没有解决我的问题。我还尝试将clearInterval(倒计时)放在函数的前面,但这只是使它完全停止工作。有什么建议吗

是的,我知道倒计时在达到0时不会停止。

试试这个:

var countdown;
$('.count').each(function () {
    $this = $(this);
    if (!countdown) 
        countdown = setInterval(function(){
            countnow = parseInt($('.remain', $this).html());
            $('.remain', $this).html(countnow-1);
        }, 1000);
    return false;
});

如果不希望在加载页面片段时运行代码,请将其取出。这似乎是一个非常简单的问题。可能不相关,但使用
var
声明变量。现在你在全球范围内泄露它们,这是一件坏事。