0

div の高さが特定の長さに達したときに、長い文字列を複数の動的 div に分割しようとしています。動作するはずだと思ったコードは次のとおりです。

$(document).ready(function () {
    var arr = longishstring.split(' ');
    $('#bookpages').append("<div id='cont'></div>");
    elem = $('#cont');
    for (i = 0; arr.length > i; i++) {
        elem.append(arr[i] + ' ');
        if (elem.text().height > 475) {
            $('#bookpages').append("<div id='cont" + i + "'></div>");
            elem = $('#cont' + i);
            elem.append(arr[i] + ' ');
        }
    }
});

問題は、更新された高さではなく、div の高さを 0 として読み取っていることです。ここで何が欠けていますか?長さで分割するとうまくいきますが、それは私がやりたいことにはうまくいきません。

4

3 に答える 3

1
$(function(){
    var l, i = 0, arr = longishstring.split(' '),
        elem = $('<div id="cont"/>').appendTo("#bookpages");
    for (l = arr.length; l > i; i++) {
        elem.append(arr[i] + ' ');
        if (elem.height() > 475) {
            elem = $('<div id="#cont'+i+'"/>').appendTo('#bookpages');
            elem.append(arr[i] + ' ');
        }
    }
});
于 2013-03-15T18:35:34.193 に答える
0

elem.text().heightあなたに高さを与えるつもりはありません、それはあなたに与えるでしょうundefined

使用する:

elem.height()
于 2013-03-15T18:12:17.317 に答える
0

これは、コーディングの配置が原因であると思われます。何らかの理由で、別のjavascriptプラグインをコーディングする前にそのコードを使用した場合、高さは常に0として返されます。コードを他のスクリプトの後ろに置くことで、divが作成されました。現在の唯一の問題は、作成されたものの、divがプラグインで機能していないようであり、#bookpagesのCSSが無視されていることです。結局、JoeJohnsonsバージョンのスクリプトの多くを自分のスタイルと組み合わせて使用​​することになりました。

    $(function() {
    var l, i = 0, arr = longishstring.split(' ');
      $("#bookpages").append('<div id="cont"></div>');
      elem = $('#cont');
      for (l = arr.length; l > i; i++) {
        elem.append(arr[i] + ' ' + elem.height());
        if (elem.height() > 200) {
          $("#bookpages").append('<div id="cont'+i+'"></div>');
          elem = $('#cont' +i);
          elem.append(arr[i] + ' ');
        }
      }
    });

CSSが無視されている理由を調べなければならず、最終的にはこれに関連して別の質問を投稿しなければならない可能性があります。みんな、ありがとう!

于 2013-03-15T19:57:27.670 に答える