簡體   English   中英

jCarousel沒有被隱藏在div中

[英]jCarousel not getting drawn inside a hidden div

我正在使用div來填充ul / li列表,然后從中繪制一個jCarousel。 所以這很好用:

$('#mycarousel').jcarousel();

這是問題所在:

單擊另一個按鈕可以隱藏包含ul / li項目的div。 當div被隱藏,並且我重新調整瀏覽器窗口的大小時,jCarousel也會嘗試重繪自己,但由於它是隱藏的,因此無法正確繪制它。 結果是所有內容都在列表中混亂(如果我再次單擊該按鈕使其可見)。 但是,如果我現在重新調整窗口的大小(混亂的jCarousel現在不被隱藏),它會正確地重繪自己。

我嘗試獲取jCarousel實例的ahold,並在單擊按鈕后立即重新加載div以使div可見(當它可見並重新調整窗口大小時重新調整大小的方式)。

要獲得jCarousel,我正在使用:

JQuery('#mycarousel').data('jcarousel') 

並返回null。

如何才能正確繪制jCarousel?

是什么讓你認為$().jcarousel()調用與.data()做任何事情? 最好還是堅持使用插件提供的API,而不是猜測它是如何工作的。 無論如何,回答你的問題......

問題是,當隱藏div時,它沒有高度或寬度。 使用“左偏技術”而不是隱藏div,如下所示:

#mycarousel {
    height: 100px; /* whatever height your div will have when shown */
    width: 100px;  /* whatever width your div will have when shown */
    position: absolute:
    left: -10000px;
}

當你想要顯示它時,使用$('#mycarousel').css('position', 'static')來移除絕對定位,div將跳轉到位。

這里有更多信息。

稍微調試一下,發現當瀏覽器重新設置(並且輪播已經可見)時,會調用其重載函數來調整其位置,所以為了幫助自己隱藏/顯示div場景,我最終調用了輪播api的重載功能包裝div變得可見之后。

實際上抓住了jcarousel實例需要付出一些努力。 所以這是一個兩步的過程......

  1. 抓住輪播實例。

      var cInstance = null; cInitCallback = function(c){ cInstance = c; }; $('#mycarousel').jcarousel({ initCallback: cInitCallback, }); 
  2. 在div的節目上重新加載旋轉木馬

      cInstance.reload(); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM