2010-07-20 88 views
3

我有一個幻燈片演示與真棒循環插件運行,當你點擊顯示按鈕時,我在頁面上顯示一個隱藏層,併發送一個'暫停'命令來循環。我有兩個問題:jQuery循環插件 - 暫停/恢復奇怪的行爲

  1. 當接收到暫停命令,立即週期翻轉回第一個幻燈片序列(爲什麼?)中,在此之前不打我的/回調之後。

  2. 關閉圖層後,我發送一個'resume'命令來循環。幻燈片放映恢復(從第一張幻燈片中暫停它),但現在循環根本不會在回調之前/之後調用我,即使幻燈片播放進行中也是如此。

所以我想我的問題是:我該如何正確地暫停/恢復幻燈片,以便這些奇怪的行爲不會發生? (只是要完全清楚,避免任何混淆,這不是關於「暫停懸停」功能,這實際上工作正常。:-)

這是我的循環()初始化和我的回調功能。 (爲什麼我手動跟蹤nextSlide,你問?因爲當前幻燈片內置值不會得到正確的更新前/後回調。)

$(document).ready(function() { 
    $('#slideshow').cycle({ 
     fx: 'fade',  // choose your transition type, ex: fade, scrollUp, shuffle, etc... 
     timeout:  4000, // milliseconds between slide transitions (0 to disable auto advance) 
     speed:   1000, // speed of the transition (any valid fx speed value) 
     pause:   1,  // true to enable "pause on hover" 
     delay:   0,  // additional delay (in ms) for first transition (hint: can be negative) 
     slideExpr:  'img', // expression for selecting slides (if something other than all children is required) 
     before:  moveArrow, // function to call when moving to next slide 
     after:  upd, // function to call when moving to next slide 
     fastOnEvent: 'fast', 
    }); 
    }); 

    var nextSlide = 0; 

    function upd(a, b, c) { 
    nextSlide = nextSlide + 1;  // track which slide we're on 
    c = $('#slideshow img').length; 
    if(nextSlide > (c - 1)) nextSlide = 0; // wrap back to 1st 
    } 

    // move indicator showing which slide we're on 
    function moveArrow(a, b, c) { 
    $('#slide-indicator').attr('class', 'c'+nextSlide); 

    $(".clickmap").hide();   // hide other clickmaps 
    $(".clickmap.c"+nextSlide).show(); // show map for this slide 

    return true; 
    } 

感謝您的這 - 什麼想法 -

最好, 埃裏克

+1

我也有這個問題。我希望有人有答案。 – blackrobot 2010-07-20 15:27:38

+0

我想出了一種可能適用於您的解決方法 - 但需要幫助讓解決方法發揮正確。呃:-)你可以看到我的問題在這裏:http://stackoverflow.com/questions/3295185/jquery-remove-function-attached-to-div – Eric 2010-07-20 23:25:21

+0

我越來越近 - 我認爲問題的一部分是Mac Firefox的一些問題。我在這裏用非常簡單的代碼設置了一個文本頁面:http://themepark.com/eric/ – Eric 2010-07-23 04:07:10

回答

0

你沒有顯示發送暫停指令代碼。有些東西肯定是錯誤的,因爲暫停不會將幻燈片重置爲第一張幻燈片。

另外,您不需要自己跟蹤幻燈片索引。回調之前/之後的第三個參數是具有幻燈片內部狀態的選項對象。在那個對象上,你會發現'currSlide'和'slideCount'屬性等等。

+0

感謝提示:currSlide。之前我曾經使用過這個功能,並且得到了一些奇怪的結果,但是我再次嘗試了一次,現在沒問題,所以我之前可能犯了一個錯誤。 此外,我做了一堆更多的測試,並看到發生了什麼事情的一部分。當調用cycle('pause')時,#slideshow div中的所有元素都設置爲「top:0; left:0; position:absolute; display:none; opacity:0」,每個元素的z-index爲重置也是如此。 (續) – Eric 2010-07-23 03:10:17

+0

這導致了我所看到的一些行爲:我爲幻燈片放映層疊了幾個圖層,這樣就解釋了第一張幻燈片再次出現。 發生什麼事情的一部分是,在我的#slideshow div中,我有其他div(這不是幻燈片的一部分,但需要在那裏),所以當我設置cycle()時,我告訴它只拾取#slideshow div內的IMG元素。但我認爲在'暫停'時忽略了這一點,只是重新設置了所有內容。 – Eric 2010-07-23 03:10:53

+0

這裏有幾個不同的事情發生,這個主題變得有點瘋狂,但是FWIW我發現了一個Mac Firefox的問題,這可能有助於解釋至少一些怪異。從Mac Firefox嘗試http://themepark.com/eric ... – Eric 2010-07-23 04:10:36

3

我有同樣的問題,暫停和恢復不起作用。看來我已經安裝了lite版本,它的完整/完整版本正在運行。

0

我知道這是一個老問題,但我只是有同樣的問題。我解決這個問題的方法是簡單地創建自己的函數來暫停和恢復使用JQuery懸停事件的幻燈片。

正如Eric在一些評論中指出的那樣,一個相關的問題是,插件的暫停選項只允許懸停在IMG元素上以暫停幻燈片顯示,所以如果你有任何東西在你的圖像上,如尋呼機或任何裝飾元素,那麼你是骨架。

於是,我把我的裝飾元素,橫幅(我稱之爲「#banner」)和尋呼機所有到一個名爲「#旗幟容器」 DIV,然後應用此代碼,以解決我的問題:

$('div#banner-container').hover(function(){ 
    if(!$(this).hasClass('paused')){ 
     $(this).addClass("paused"); 
     $('div#banner').cycle("pause") 
    } 
},function(){ 
    if($(this).hasClass('paused')){ 
     $(this).removeClass("paused"); 
     $('div#banner').cycle("resume") 
    } 
}); 
0

問題出現在JQuery Cycle Plugin版本中:「lite」版本忽略暫停/恢復命令。使用完整版本可以解決問題。

編輯:對不起,我錯了:我試過兩個版本,但使用完整版本有相同的問題。