首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ClearInterval不停止

ClearInterval不停止
EN

Stack Overflow用户
提问于 2011-02-03 16:54:47
回答 2查看 1.7K关注 0票数 0

我有以下JQuery代码:

代码语言:javascript
复制
JModel.ClipThumbs.Clip.prototype = {
    interval: null,

    setThumb: function(src) {
        this.mainThumb.src = src;
    },
    mouseEntered: function(el) {
        var temp        = this;
        var x           = 0;
        this.interval   = setInterval(function() {
            if (x >= temp.galleryImgs.length) {
                x = 0;
            }
            // set main thumb
            temp.setThumb(temp.galleryImgs[x].src);
            // increment for the display (0/7 being bad looking to users)
            x++; 
            // update image count display
            $(temp.clipCount).html(""+x+"/"+temp.galleryImgs.length); 
        }, 1000);
    },
    mouseLeft: function(el) {
        clearInterval(this.interval);
    }
};

当我离开画廊的时候,旋转并没有停止

想法?

编辑:修复是:

代码语言:javascript
复制
jQuery(this.mainThumb)
    .bind('mouseenter', jQuery.proxy(this.mouseEntered, this))
    .bind('mouseleave', jQuery.proxy(this.mouseLeft, this));

mouseleave必须有一个具有此绑定的jQuery.proxy才能访问它。

EN

回答 2

Stack Overflow用户

发布于 2011-02-03 18:57:29

这应该是可行的:

代码语言:javascript
复制
clearInterval( this.interval );

galleryImageMouseEnter方法中,您要在实例对象上定义interval属性。因此,在galleryImageMouseLeave方法中,您必须编写this.interval来引用该属性。

票数 1
EN

Stack Overflow用户

发布于 2011-02-04 10:47:59

interval属性仅在函数作用域中定义,它们不能相互访问。在原型中定义一个interval属性,让您从这两个函数中到达它。

代码语言:javascript
复制
JModel.ClipThumbs.Clip.prototype = {

    // Define an interval object property
    interval: null,

    setMainThumb: function(src) {
        this.mainThumb.src = src;
    },
    galleryImageMouseEnter: function(el) {
        var temp        = this;
        var x           = 0;
        this.interval   = setInterval(function() {
            if (x >= temp.galleryImgs.length) {
                x = 0;
            }
            temp.setMainThumb(temp.galleryImgs[x].src);
            x++;
        }, 1000);
    },
    galleryImageMouseLeave: function(el){
        clearInterval(this.interval);
    }
};

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4889061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档