この問題には簡単な解決策があることは知っていますが、私はすでにかなり前からこれを解決しようとしており、あなたの助けが必要です。
私のコードでは、画面の幅に基づいて記事DIVを並べ替え、それらを行にラップし、必要に応じてダミーの記事を挿入しています。
ここで、4つの記事DIVと1つのダミーのjQueryセットがあるとします。次に、ダミーをさらに挿入する必要があるのか、それとも削除する必要があるのかを知る必要があります。行ごとの正しい数の記事が問題の関数に渡されます。たとえば、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
};
ただし、レイアウトが次のようになっている場合(1行あたり5つの記事)、このコードは機能しdummiesNeeded
ませ1
ん4
。
| Article | Article | Article | Article | Article |
| Article | Dummy |
これに対する解決策を見つけるための助けは大歓迎です!ありがとう!
更新されたソリューション
マークされた回答の助けを借りて、必要dummiesNeeded
なダミーの符号付き整数を保持する新しい変数を変更して挿入する必要があり ました。
dummiesNeeded = (articlesPerRow - (len - dummiesFound.length) % articlesPerRow) % articlesPerRow,
trueNeed = dummiesNeeded - dummiesFound.length