我知道这个问题有一个简单的解决方案,但我已经尝试解决这个问题已经有一段时间了,需要您的帮助。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