0

特定のサイズを超える引用符を自動的に切り捨て、それらに「続きを読む」リンクを追加するためのスクリプトに取り組んでいます。問題は、ブロック クォートが互いに入れ子になっていることです。スクリプトは単一レベルのブロック引用符に対しては正常に動作していますが、ネストされたブロック引用符に直面すると、必要以上の情報が消去されてしまいます。

私がやりたいことはこれです:

  1. 親要素の子を調べて、親の最初の blockquote 子を見つけます
  2. このブロック引用の最初の段落に画像が含まれているかどうかを確認してください。含まれている場合は、このブロック引用の最初と 2 番目の段落を複製します。そうでない場合は、最初の段落を複製します。
  3. このブロック引用に他のブロック引用が含まれていないか確認してください。その場合は、その子孫ブロック引用符をすべて複製します。
  4. 親 blockquote の複製された段落と複製されたすべての blockquote の子孫 (該当する場合) を 1 つの変数 (cloneCon と呼びます) に結合します。
  5. 親 blockquote の html を変数 cloneCon の内容に置き換えます。
  6. 続きを読むリンクを親ブロック引用に追加します。

これが私が今使っているコードです:

var post = $('#post_two_ifr').contents().find('#tinymce');
var markup = $('<body>').append(post.html()); // temporary container

markup.children('blockquote:first').each(function() {
    var original = $(this).prev('p').children('a').attr('href'); 
    var viz = '';
    if ($(this).children('p:first').find('img').length > 0) {
        var viz = $(this).children('p:lt(2)').clone();
    } else {
        var viz = $(this).children('p:first').clone();
    }

     $(this).html(viz).append('<p><a href="'+original+'" class="tumblr_blog">Read More</a></p>');
});

post.html(markup.html());

各関数内のすべてがmarkup.children私が問題を抱えているものです。私が使用している HTMl は次のようになります。

<p><a class="tumblr_blog" href="http://example.org">user#1</a>:</p>
<blockquote>
    <p><a class="tumblr_blog" href="http://example.org">user#2</a>:</p>
    <blockquote>
        <div>
            <p><img alt="image" height="340" src="" /></p>
            <p>consectetur adipiscing elit. Nullam sit amet velit nibh. Aliquam leo libero, pellentesque eget fringilla eget, pretium eu purus. Pellentesque a neque at arcu fermentum volutpat. In et dolor ligula, et aliquam odio. Sed sagittis fermentum massa, vel tempus neque adipiscing nec. Nunc posuere commodo orci, ac imperdiet odio malesuada eget. Aliquam pharetra pretium faucibus. Sed erat urna, laoreet quis ornare quis, fermentum quis lacus. Vestibulum a interdum nisi. Proin hendrerit orci non neque dignissim feugiat. Vivamus pretium pretium nunc, ut dapibus augue ullamcorper at. Suspendisse ac est vel velit vehicula accumsan quis vel turpis. Pellentesque eros velit, ullamcorper ac tempus sit amet, placerat quis magna. Sed ipsum nibh, convallis at tempor sit amet, vehicula vitae mauris. Aenean rutrum, lorem vitae suscipit tempor, libero lorem porta diam, a semper nulla erat in mi. Morbi leo lacus, placerat id hendrerit vitae, semper id tellus.</p>
            <p><a class="tumblr_blog" href="http://example.org">Read More</a></p>
        </div>
    </blockquote>
    <p>Lorem Ipsum Dolor.</p>
    <p>Consectetur Adipsing Elit.</p>
    <p>I used to wonder what friendship could be.</p>
</blockquote>

ご協力ありがとうございました!

編集:わかりました。親ブロック引用を完全に複製し、親ブロック引用から必要な数の子段落を削除するようにスクリプトに指示するだけで、実行が単純化されました。

4

1 に答える 1

0

わかった。親ブロッククォート全体を複製し、親ブロッククォートから必要な数の子段落を削除するようにスクリプトに指示することで、実行を簡略化しました。そうすれば、子のブロッククォートがあるかどうかを確認する必要がありません。それらは自動的に複製されます。

于 2012-12-16T20:17:05.770 に答える