1

I want to insert a li tag in after each third li tag using jquery how can we handle this. Consider the following example i have nine li items

 <ul>
    <li>1 element</li>
    <li>2 element</li>
    <li>3 element</li>
    <li>4 element</li>
    <li>5 element</li>
    <li>6 element</li>
    <li>7 element</li>
    <li>8 element</li>
    <li>9 element</li>
</ul>

<ul>
  <li>1 element</li>
  <li>2 element</li>
  <li>3 element</li>
  <li class="sss">item inserted</li>
  <li>4 element</li>
  <li>5 element</li>
  <li>6 element</li>
  <li class="sss">item inserted</li>
  <li>7 element</li>
  <li>8 element</li>
  <li>9 element</li>
  <li class="sss">item inserted</li>
</ul>
Milind Anantwar
  • 81,290
  • 25
  • 94
  • 125
ganesh raj
  • 71
  • 1
  • 7

5 Answers5

6

You can use :nth-child to target every 3,6,9...n element. and insert new content after matched elements:

$('<li class="sss">item inserted</li>').insertAfter($('li:nth-child(3n+3)'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul>
    <li>1 element</li>
    <li>2 element</li>
    <li>3 element</li>
    <li>4 element</li>
    <li>5 element</li>
    <li>6 element</li>
    <li>7 element</li>
    <li>8 element</li>
    <li>9 element</li>
</ul>
Milind Anantwar
  • 81,290
  • 25
  • 94
  • 125
0

Try this: add li before li for which index divided by 3, see below code

$(function(){
  $('ul li').each(function(i){
     if(i!=0 && i%3==0)
        $(this).before('<li class="sss">Insert here </li>');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<ul>
    <li>1 element</li>
    <li>2 element</li>
    <li>3 element</li>
    <li>4 element</li>
    <li>5 element</li>
    <li>6 element</li>
    <li>7 element</li>
    <li>8 element</li>
    <li>9 element</li>
</ul>
Bhushan Kawadkar
  • 28,279
  • 5
  • 35
  • 57
0

try this

$("ul li:nth-child(3n)").append("<li class='sss'>item inserted</li>")
Farhad
  • 104
  • 3
  • 17
0

You can check the code below.

<!Doctype html>
<html>
    <head>

    </head>

    <body style="margin-bottom: 100px;">
        <ul class="myUlClass">
            <li>1 element</li>
            <li>2 element</li>
            <li>3 element</li>
            <li>4 element</li>
            <li>5 element</li>
            <li>6 element</li>
            <li>7 element</li>
            <li>8 element</li>
        <li>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
        <script>
            $(document).ready(function() {
                var couter = 1;
                $( ".myUlClass li" ).each(function() {

                    if(couter != 1 && couter%3 == 0){
                        $(this).before( '<li class="sss">item inserted</li>' );
                    }
                    couter++;
                });
            });
        </script>
    </body>
</html>
Punit Gajjar
  • 4,937
  • 7
  • 35
  • 70
0

Try this!

$(document).ready(function() {
    $(function(){
        $('ul li').each(function(i){
            var j = i +1;
            if(j!=0 && j%3==0) {
                $(this).after('<li class="sss">Insert here </li>');
            }
        });
    });
});
Chintan Mirani
  • 1,464
  • 9
  • 18