2012-02-01 84 views
2

直接去點:MooTools:抓到底部右邊

我有一個容器div,接收一些內嵌塊元素。根據元素的容器必須接收的數量,這些元件的尺寸爲因此遵循這些規則:

for(i=0; i<elements.length;i++){ 
    switch (number of elements){ 
      case 1: elements[i].width=100%; break; 
      case 2: elements[i].width=50%; break; 
      case 3: elements[i].width=33.3%; break; 
      case 4:if(i<3){elements[i].width=33.3%;}else{elements[i].width=100%;}break; 
      case 5:if(i<3){elements[i].width=33.3%;}else{elements[i].width=50%;}break; 
      case 6:elements[i].width=33.3%;break; 
    } 
} 

而且,就目前來看,容器爭奪他們在頂部(MooTools的.grab(元素, 'top')方法)。

所以我有這樣的: http://i.stack.imgur.com/gq4T0.png

但我想是這樣的: http://i.stack.imgur.com/eTrTp.png

所以,要非常簡潔,我想的元素被添加到容器上的底部正確的並推動其他元素向上容器,這就是爲什麼我不能簡單地使用.grab(元素,'底部')。

我一直在轉動,在我的頭兩天,看着每一個相關MooTools的文檔,但似乎我解決不了這個。 有什麼想法?

回答

1

呃,要看你做什麼,但看到你沒有張貼DOM,或者你的代碼注入,這裏有什麼可用的破敗。

你有3個鉤到移動/更改父節點:

注入

element.inject(target, 'bottom|top|after|before')

採用

parent.adopt(element)

parent.grab(element, 'bottom|top|after|before')

他們達到同樣的事情。你沒有展示實際的注入是如何發生的,但是你的循環是從第一個到最後一個,因此每個連續的元素都會 - 默認 - 到底部。

你會怎麼做,僅僅通過:

element.inject(cellElement) - 默認情況下是去底部,所以它會在循環的順序做1,2,3,4,5,6。添加'頂部'而不是作爲參數來反轉它,或者如果你做了一個while(lengthVar--) {},你可以反轉它。我推薦使用Array.each循環的元素(或Elements.each,因爲它是 - 它也可以給你一個手柄上的索引,如果你需要它)

你也可以使用element.inject(cell.getLast(), "before")或遵循任何指標,你認爲合適。發佈更多代碼或更好,請創建一個http://jsfiddle.net示例,我們可以將它整理出來。

+0

乾杯很多。我無法真正分享代碼,因爲它是我公司的知識產權,所以我給了一個僞代碼循環來給出這個想法。我認爲這就夠了。但我想我將無法繞過element.inject(cell.getLast(),「之前」)解決方案,我寧願避免。但我認爲你是對的,這是唯一的方法。再次感謝你! – 2012-02-02 08:39:23

+1

'element.inject(cell,「top」);'? – 2012-02-02 11:45:45