我知道这个问题有一个简单的解决方案,但我已经尝试解决这个问题很长一段时间了,需要你的帮助。
在我的代码中,我根据屏幕宽度重新排序我的文章 DIV,并将它们包装成行并在需要时插入虚拟文章。
现在,假设我有 4 个文章 DIV 和 1 个虚拟对象的 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