0

我知道这个问题有一个简单的解决方案,但我已经尝试解决这个问题很长一段时间了,需要你的帮助。

在我的代码中,我根据屏幕宽度重新排序我的文章 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
4

2 回答 2

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;
于 2013-02-19T15:03:31.127 回答
1

问题确实 (len - dummiesFound.length) % articlesPerRow

你必须使用articlesPerRow - ((len - dummiesFound.length) % articlesPerRow)

干杯

于 2013-02-19T15:16:49.907 回答