2017-03-13 11 views
0

私はいくつかの投稿を持っていますが、それぞれの投稿には独自のコメントがあります。jqueryスライス機能が正しく動作しない

私だけの表示に5件のコメントスライス機能を使用し

:各ポストはその5件のコメントを表示するが、唯一すべき

<div class='comment_section_div' answer_index = "{{forloop.counter}}" pk = "{{ answer.pk }}" style="margin: 10px 0px; padding-right:10px;"> 
     <div style="font-size: 12px; color: #737373; margin-top: 15px; direction: rtl;"> 
      <div id = "comment_txt" style="display: inline;"> 
       {{ comment.comment }} 
      </div> 
      <div style="display: inline;"> 
       by - 
       <a href="#" onclick="return false;"> 
        {{ comment.user|find_username }} 
       </a> 
       in - 
       {{ comment.timestamp|pretty_date }} 
      </div> 
     </div> 
</div> 

:ループの中で私のHTMLコンテンツ

$(".comment_section_div").children("div").slice(0, 5).show(); 

を最初の記事はそれらを示しています。実は私が高い値にスライスパラメータを設定した場合の他の記事も、このように、彼らを表示することができます。

$(".comment_section_div").children("div").slice(0, 50).show(); 

しかし、この方法は、最初の記事は、そのコメントのすべてを示しています。このコードは相対的に実行されているわけではありませんが、絶対に実行されているようです。

どうしたのですか?解決策は何ですか?

CSSの一部:代わりにlt:(index)セレクタを使用しているsliceにしようとの

.comment_section_div > div{ 
    display:none; 
    padding: 10px; 
    border-width: 0 1px 1px 0; 
    border-style: solid; 
    border-color: #fff; 
    box-shadow: 0 1px 1px #ccc; 
    margin-bottom: 5px; 
    background-color: #f1f1f1; 
} 
+2

ので、単純に各ループ内でスライスした後、それぞれの親を通過 - あなたが現在行っている方法は、一括であります。 –

+3

'$("。comment_section_div ")。children(" div ")'はすべての子divを単一の '配列'として返します。スライス(0,5)...} ' –

+0

@Darren(ダーレン)のような何かをする必要があります:' $ {"comment_section_div" Sweeneyはあなたの答えを書くことができるので、私はそれをマークすることができました(私は実際には今解決しました) .children( "div")。スライス(0,5).show(); }); – SMahdiS

答えて

1

$(".comment_section_div").children("div").slice(0, 5).show();は、全てのdivを発見され、これは、例えば上部Nに小さいサブセットと.children("div:lt(5)").show();

フィドルをセレクタを制限します各親の下にあるdivの各セットではなく、 `(「comment_section_div。」)各` $内ので、各 `div` - あなたは、foreachループを介して親を実行する必要があります

$('.comment_section_div').each(function() { 
    $(this).children('div').slice(0, 5).show(); 
}); 
関連する問題