2011-04-11 162 views
2


我有我的'setInterval'函數的問題,我想啓動函數,當我徘徊我的div,但setInterval工作就在第一次當我把div放在div上時>如果我留在div上,它不會一直改變圖片,而是停止'setinterval'。jQuery setInterval /懸停:它工作一次,但然後停止setInterval

這是mouseenter的問題嗎?我試着'懸停'等,但似乎沒有任何竅門。

有沒有人有解決方案?

非常感謝你的幫助,這是我的代碼:

img.bind('mouseenter', function(){ 
    setInterval(next($(this)),1000); 
}); 

function next(elem){ 
    var img_li = elem.find('li'); 
    count++; 
    if (count>2) count=0; 

    img_li.eq(count).fadeIn('fast', function(){ 
     img_li.eq(current).css({'display':'none'}); 

     current = count; 
    }); 
} 

回答

2

這是因爲你下一次分配($(本))至setInterval的,而不是函數本身的返回值。

試試這個:

img.bind('mouseenter', function(){  
    var that = $(this); //Use that-this model to avoid any scope issues with this reference 
    setInterval(function(){ 
     next(that); 
    },1000); 
}); 
+0

好吧,它完美的作品!謝謝! – Paul 2011-04-11 14:23:35

2

你可以考慮使用jQuery Timers插件,它可以更容易地工作,這樣的功能。特別是,看看下面:

每次(間隔:整數|字符串,[標籤=間隔:字符串],FN:功能,[次數= 0:整數])

每次將將定義的函數(fn)添加爲定時事件,以給定的時間間隔(間隔)運行給定的次數(次)。如果times設置爲0,則調用該方法的次數是無限的。對於給定的定時事件,還可以爲提供的字符串(標籤)或提供的間隔的字符串表示設置標籤。另外,間隔可以通過使用諸如「3s」的字符串來定義3秒。

+0

好的,謝謝!我會看一看 ! – Paul 2011-04-11 14:23:18