我知道这个问题有一个简单的解决方案,但我已经尝试解决这个问题很长一段时间了,需要你的帮助。
在我的代码中,我根据屏幕宽度重新排序我的文章DIV,并根据需要将它们包装成行并插入虚拟文章。
现在,假设我有一个jQuery集合的4篇文章DIV和1个虚拟。然后我需要知道我是否真的需要插入更多的假人或删除一些。每行的正确文章数被传递给相关函数。例如,假设每行需要有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
答案 0 :(得分:2)
我认为你的问题在这里:
dummiesNeeded = (len - dummiesFound.length) % articlesPerRow
如果在你的例子中,你有一篇文章(所以len = 1)和一个虚拟(所以dummiesFound.length = 1),那么1-1 = 0,所以你的dummiesNeeded
最终为0 .0%5 = 0而不是你想要的4。
肯定你的dummiesNeeded
应该是:
dummiesNeeded = (articlePerRow - (len - dummiesFound.length) % articlesPerRow) % articlesPerRow;
答案 1 :(得分:1)
确实存在问题
(len - dummiesFound.length) % articlesPerRow
你必须使用articlesPerRow - ((len - dummiesFound.length) % articlesPerRow)
干杯