2015-02-06 64 views
0

我遇到了jQuery代碼的問題,我希望得到一些幫助。當下一個和上一個按鈕正常工作時,正確停止幻燈片放映似乎存在問題。這大概是我們完全忽略的東西,但我看不到什麼需要使用jQuery停止幻燈片顯示的幫助

控制檯中沒有顯示JavaScript錯誤。正在達到中斷方法 - 有一點我有console.log調用在那裏進行驗證(清理出於演示原因)。

http://jsfiddle.net/eLn83ep0/

你的幫助是非常讚賞。

下面的代碼是上一張/停止未來的功能/啓動/:

 if ($(settings.next).size()) { 

     $(settings.next).bind('click.scrollface', function (e) { 
      methods.interrupt.call($this); 
      methods.next.call($this); 
     }); 

     } 

     if ($(settings.pause).size()) { 

     $(settings.pause).bind('click.scrollface', function (e) { 
      methods.interrupt.call($this); 
     }); 

     } 
     if ($(settings.play).size()) { 

     $(settings.play).bind('click.scrollface', function (e) { 
      methods.interrupt.call($this); 
      methods.start.call($this); 
     }); 

     } 

     /* 
     * Setup up prev bindings 
     */ 

     if ($(settings.prev).size()) { 

     $(settings.prev).bind('click.scrollface', function (e) { 
      methods.interrupt.call($this); 
      methods.prev.call($this); 
     }); 

     } 

下面是中斷的方法:

interrupt: function (time) { 
    return $(this).each(function() { 

    var data = $(this).data('scrollface'); 
    console.log(data); 
    console.log('...'); 
    if (!data) { 
     return false; 
    } 


    var $this = $(this), 
    period = 0; 


    /* 
    * Stop the timer, and wait a period of time before restarting it. 
    * Period defaults to the timer interval 
    */ 

    if (data.timer) { 
     if (typeof time !== "number") { 
     period = data.interval; 
     } else { 
     period = time; 
     } 

     methods.stop.call(this); 

     setTimeout(function resume_timer() { 
     clearInterval(data.timer); 
     data.timer = null; 
     methods.start.call($this); 
     }, period); 

    } 

    }); 

}, 
+0

你得到一個錯誤?你的問題不清楚哪裏出了問題。 – DLeh 2015-02-06 15:30:34

+0

嗨DLeh,沒有任何錯誤。它實際上是運行中斷方法 - 這是來自jQuery的scrollface庫 - 但未能停止實際的幻燈片。 – 2015-02-06 17:23:31

+0

@WSTeam我懷疑這裏的評論意味着你的問題。在jquery.scrollface.js中*/* *停止計時器,並等待一段時間再重新啓動計時器。 *週期默認爲定時器間隔 * /'請參閱,您注意到它僅在短時間內中斷sildshow。所以暫停和停止不一樣。它真的停了片刻。而是調用'stop' – 2015-02-06 17:42:57

回答

0
if ($(settings.pause).size()) { 
     $(settings.pause).bind('click.scrollface', function (e)   
      methods.stop.call($this);    
     }); 

    } 
    if ($(settings.play).size()) { 
     $(settings.play).bind('click.scrollface', function (e) { 
      methods.start.call($this);    
     }); 
    } 

,並刪除在上一個中斷通話接下來

//methods.interrupt.call(this); 

因爲th e中斷方法停止間隔方法和超時後重新開始,所以大多數時間你暫停在這個超時,但在這個超時後,中斷方法再次啓動intervall和不在乎如果你手動採用它

看到你更新的小提琴在這裏工作http://jsfiddle.net/7ko4rdda/

編輯

如果調用0的按鈕上一個下一個處理程序中斷,那麼你已經預期行爲的研究,對於INTERVALL期後下一個/上開始新的點擊

if ($(settings.prev).size()) { 
    $(settings.prev).bind('click.scrollface', function (e) { 
      methods.interrupt.call($this,0); 
      methods.prev.call($this); 
    }); 

} 
if ($(settings.next).size()) { 
    $(settings.next).bind('click.scrollface', function (e) { 
      methods.interrupt.call($this,0); 
      methods.next.call($this); 
    }); 

} 

http://jsfiddle.net/7ko4rdda/1/