3 列のフローティング div を使用して、1 行の 3 列から最大の高さを取得し、3 つの div すべてを同じ高さにするスクリプトを作成しました。次に、行ごとにそれを繰り返します。スクリプトは正常に動作しますが、価格帯やブランドなどの選択に応じて特定の div を非表示または表示するカスタム フィルター システムを JQuery で構築しました。
フィルターを使用している場合、一番上の行の列 2 を削除し、2 番目の行の列 4 を一番上の行に移動させます。コードに列 2 を残して、高さ/列チェック スクリプトを再実行しても機能しません。
だから私がしようとしているfilter(':nth-child(3n-2)')
のは、:nth-child 選択から隠されているすべての div をスキップする if ステートメントを追加する場所です。
内部で関数を使用できることは理解していますfilter();
が、それは私にとって新しい関数であるため、正確に使用する方法がわかりません。
ここに私の作業コードがあります:
var $sections = $('.section-link');
$sections.filter(':nth-child(3n-2)').each(function () {
var $this = $(this),
$els = $this.nextAll(':lt(2)').addBack();
var sectionheight = new Array();
$els.each(function () {
var value = $(this).find('.section-title').height();
sectionheight.push(value);
});
var newsectionheight = Math.max.apply(Math, sectionheight);
$els.find('.section-title').height(newsectionheight);
})
JSfiddle の例
これまでのところ、このようなものを使用しようとしています:
$sections.filter(function() {
return $(this).css('display') !== 'none';
}, ':nth-child(3n-2)')