2012-11-10 121 views
3

當前我遇到了jQuery Masonry插件令人討厭的錯誤。 這裏的交易:我想做一個兩列FAQ頁面,在那裏我用石工浮動div。 這個div裏面是一個h3-Tag,它會觸發一個slideToggle事件,並展開一個隱藏的div(div.answer)。問題是,如果我點擊h3標籤並觸發事件,div.answer將展開,但覆蓋下面的div幾秒鐘,直到它達到最終和正確的位置。jQuery砌體與slideToggle事件重疊divs

下面是的slideToggle事件的腳本: (你可以看到,我已經嘗試過召回在腳本中的幾個位置砌築功能,但它沒有解決這個問題)

$(document).ready(function() { 
      $('.answer').hide(); 
      $('#container').masonry(); 
      $('.show').click(function() { 
       imgelem = $(this); 
       $(this).parent().next().stop().slideToggle("slow", function() { 
        $('#container').masonry('reload'); 
        if ($(this).css("display") == "none") { 

         imgelem.attr("src", "images/expand.png"); 
        } 
        else { 
         imgelem.attr("src", "images/collapse.png"); 
        } 
       }); 
        $('#container').masonry(); 
      }); 
      $('#container').masonry('reload'); 
     }); 

這裏你可以看到問題:http://jsfiddle.net/2huZd/3/

我希望有人能幫助我!

編輯:沒人能解決這個問題嗎? :(

回答

0

我和另一個masonr-like插件(shapeshift)有同樣的問題。事情是slideToggle的回調事件只有在幻燈片效果完全準備好後纔會觸發。沒有(我havn' t發現至少)任何「期間」事件,將重新初始化砌石在每個幻燈片步驟

我發現的唯一解決方案是用顯示/隱藏切換替換幻燈片效果箱的惱人的重疊效果贏得'不再可見,而且我認爲UX會更好。

1

您可以使用slideToggle()函數中的step選項,並告訴砌體重新計算每個步驟的位置......但如果網格上的元素過多,則可能需要處理太多的信息。