には改行数をカウントする機能があります。divの改行数を幅に応じて数える関数を持っています窓の$(window).on('resize')
ファンクションに配置すると機能は正常に機能しますが、ファンクション$(document).ready()
の場合は機能しません。ページの読み込みやウィンドウのサイズ変更を正しく実行したいのですが、どうすれば両方をサポートできますか?
Javascriptを/ jQueryの:
// functions called in both document.ready() and window.resize
$(document).ready(function(){
var lineCount = getLineCount();
postItems(lineCount);
$('.answer').text("Ready");
});
$(window).on('resize', function(){
var lineCount = getLineCount();
postItems(lineCount);
$('.answer').text("Number of lines: " + lineCount);
});
// calculates the amount of lines required to hold the items
function getLineCount() {
var lineWidth = $('.line').width();
var itemWidthSum = 0;
var lineCount=1;
$('.item').each(function(index, element) {
if((lineWidth - itemWidthSum) > ($(element).outerWidth())) {
itemWidthSum = itemWidthSum + $(element).outerWidth();
} else {
lineCount++;
itemWidthSum = $(element).outerWidth();
}
});
return lineCount;
}
// overlays rows for the amount of linebreaks
function postItems(lineCount){
var container = $('<div />');;
for(var i = 1; i <= lineCount; i++) {
container.append('<div class="line">' + i + '</div>');
}
$('.line-wrap').html(container);
}
ページの先頭に表示されます、それは間違って17行を示しており、サイズを変更後、それは正しい金額が表示されます。
これらのメソッドを2回呼び出すことは冗長です...イベントハンドラが宣言された後にサイズ変更をトリガーするだけで、テキストの違いを除いて同じことを行うことができます – charlietfl