我知道這個問題有一個簡單的解決方案,但我已經嘗試解決這個問題已經有一段時間了,需要您的幫助。Javascript - 確定需要刪除或添加的元素數
在我的代碼中,我根據屏幕寬度對我的文章DIV進行了重新排序,並將它們包裝成行並根據需要插入虛擬文章。
現在,假設我有一個包含4個文章DIV和1個dummy的jQuery集合。然後我需要知道我是否真的需要插入更多的傻瓜或刪除一些。每行正確的文章數量傳遞給相關函數。例如,假設每行需要2篇文章。
所以,在我運行代碼的佈局是這樣的:
| Article | Article |
| Article | Article |
| Dummy |
...當它需要是這樣的(冗餘假人移出):
| Article | Article |
| Article | Article |
這是我的當前代碼:
var checkForDummies = function (unwrappedArticles, articlesPerRow) {
var $articles = $(unwrappedArticles),
len = $articles.length,
i,
dummiesFound = $articles.filter('.dummy-cell'),
dummiesNeeded = (len - dummiesFound.length) % articlesPerRow,
fragment = document.createDocumentFragment(),
div = document.createElement('div');
// No dummies needed after removal
if (dummiesNeeded === 0 && dummiesFound.length)
dummiesFound.remove();
// No dummies needed nor found
else if (dummiesNeeded === 0)
return;
// Dummies needed – remove redundant dummies (max. dummies needed = dummiesNeeded)
else if (dummiesNeeded < dummiesFound.length)
dummiesFound.splice(dummiesNeeded);
// Dummies needed – create new ones
else if (dummiesNeeded > dummiesFound.length)
// Left out to preserve space
};
然而,這個代碼將不能在佈局看起來像這樣(每行5篇)工作 - 因爲dummiesNeeded
是莫名其妙1
而不是4
:
| Article | Article | Article | Article | Article |
| Article | Dummy |
任何幫助找到一個解決方案表示讚賞!謝謝!
更新的解決方案
有了明顯答案的幫助下,我需要修改dummiesNeeded
並插入持有簽署需要假人的整數一個新的變量:
dummiesNeeded = (articlesPerRow - (len - dummiesFound.length) % articlesPerRow) % articlesPerRow,
trueNeed = dummiesNeeded - dummiesFound.length
那麼,這個函數調用一次*每行* ?或者它應該被整個集合調用一次? – 2013-02-19 15:01:30
@MattBurland它只被稱爲每組一次。 – micadelli 2013-02-19 15:09:06
[在固定大小頁面(多列)上佈局內容列表的算法的可能的重複](http://stackoverflow.com/questions/8524699/algorithm-to-layout-a-table-of-contents -on-a-fixed-sized-page-multi-column) – starblue 2013-02-20 06:20:58