2010-01-27 109 views
5

我有一個基本的切換開關,顯示在關閉所有其他類似的div時點擊div。這工作得很好,切換不是問題。見下文:jquery回調砌石插件

$(document).ready(function(){ 
$('.threadWrapper > .littleme').click(function() { 
    $(this).next().toggle('slow'); 
    $(this).toggle('slow'); 
    $('.littleme').not(this).next().hide('slow'); 
    $('.littleme').not(this).show('slow'); 
    return false; 
}).next().hide(); 
}); 

我還利用了砌體撐着jQuery的,它組織horrizontally然後垂直所有選定的div元素。輝煌,適用於各種不同的div高度。見下:

$(function(){ 
    $('#mainContent').masonry({ 
    columnWidth: 200, 
    itemSelector: '.threadWrapper:visible', 
}); 
}); 

我想要做的是每當div展開或崩潰時重新組織布局。實際上觸發.masonry命令作爲初始.click函數的回調。這是不適合我的。適用於初學者的問題。

瞭解其目前在這裏工作:kalpaitch.com

安德魯

加比 - 謝謝你的語法檢查,我很擅長這些起毛了,然後花費約半小時運行環視爲他們。

Cyro - 這是完美的和有效的,我將在不久的將來使用它。我打算加入的是如何在show/hide /以動畫速度切換它們(上面的代碼相應地改變)的情況下實現這一點。然後砌石電話會在div展開之前觸發(正如目前在kalpaitch.com上發生的那樣)。非常感謝答案,但這樣做肯定更容易。

回答

4

嘗試重新運行砌築調用回覆點擊修改後的決心調整頁面:

$(document).ready(function(){ 
$('.threadWrapper > .littleme').click(function() { 
    $(this).next().toggle(); 
    $(this).toggle(); 
    $('.littleme').not(this).next().hide(); 
    $('.littleme').not(this).show(); 

    // re-run masonry 
    $('#mainContent').masonry({ 
    columnWidth: 200, 
    itemSelector: '.threadWrapper:visible' 
    }); 

    return false; 
}).next().hide(); 
}); 

編輯:看着似乎砌體將節省您的初始設置,所以你只需要再次調用main方法的砌體文檔。這應該也是如此:

$(document).ready(function(){ 
$('.threadWrapper > .littleme').click(function() { 
    $(this).next().toggle(); 
    $(this).toggle(); 
    $('.littleme').not(this).next().hide(); 
    $('.littleme').not(this).show(); 

    // re-run masonry 
    $('#mainContent').masonry(); 

    return false; 
}).next().hide(); 
}); 
1

你有一個錯誤的道路,你包括masonry.js文件..

您使用js/jquery.masonry.js當它應該是JS/jquery.masonry.js(資本JS)

,你在有一個額外的逗號(,)你通過選項結束磚石..

後,你在你的榜樣修復這些錯誤,只需要運行又像冷凍在他的回答中提到的磚石代碼...

2

我也有一個切換,並且無法得到磚石重新加載的效果。 但是當物品淡出(過濾)時,我確實得到了石工來重新加載。

參見:http://jasondaydesign.com/masonry_demo/

+1

非常好。雖然有點不幸的IE仍然在90年代褪色。我試着用超時工作,但看起來更順暢。介意我看到你最終結束了什麼。 – kalpaitch 2010-06-05 02:43:59

+1

你能解釋一下嗎?第一次運行後,你如何迫使砌體再次運行?這是記錄在任何地方? – BuddyJoe 2011-09-06 02:51:12

+0

那麼,我會使用Desandro的最新 - 同位素,其中包括過濾。但是,如果您按照我的鏈接查看代碼,則會看到我添加了過濾功能和超時的位置 – Jason 2011-09-08 14:57:58

0

這已經有一段時間,但因爲我一直打你的問題,同時尋找其他的東西,我想在這裏補充一點,砌體增加了.reload功能。這對我很有用:

 $(window).resize(function(){ 
      var wallWidth = $wall.width(); 
      var width  = $(window).width(); 
      if (width<700) { 
        $('.brick').css('width', wallWidth/1); 
        $wall.masonry('option', { columnWidth: wallWidth/1 }); 
        $wall.masonry('reload'); 
      } else if (width>=700 && width<1024) { 
        $('.brick').css('width', wallWidth/2 - 1); 
        $wall.masonry('option', { columnWidth: wallWidth/2 }); 
        $wall.masonry('reload'); 
      } else if (width>=1024) { 
        $('.brick').css('width', wallWidth/3 - 1); 
        $wall.masonry('option', { columnWidth: wallWidth/3 }); 
        $wall.masonry('reload'); 
      } 
     });