【问题标题】:Append before last child在最后一个孩子之前追加
【发布时间】:2015-07-16 07:14:59
【问题描述】:

我有一个 ID 为 wrapper 的 div,我正在使用 .append() 在该 div 的末尾插入一些内容,如下所示:

$("#wrapper").append('<div class="content"><div class="subcontent">Some stuff</div></div>');

但是,我还希望选择在包装器中的最后一个content div 之前插入一个新的子元素。

如果 HTML 输出如下所示:

<div id="wrapper">
    <div class="content">
        <div class="subcontent">
            First
        </div>
    </div>
    <div class="content">
        <div class="subcontent">
            Second
        </div>
    </div>
</div>

我想在最后一个元素之前插入一个元素,所以我得到了这个:

<div id="wrapper">
    <div class="content">
        <div class="subcontent">
            First
        </div>
    </div>
    <div class="content">
        <div class="subcontent">
            Third
        </div>
    </div>
    <div class="content">
        <div class="subcontent">
            Second
        </div>
    </div>
</div>

我该怎么做?

【问题讨论】:

  • 这是你想要的吗? api.jquery.com/insertbefore
  • 我会尝试做一个jsfiddle
  • @Boxiom 现在可以正常工作了吗?我刚刚更改了您的 div id 及其工作。

标签: javascript jquery html append


【解决方案1】:

您可以使用.before() 在元素之前添加兄弟:

$("#wrapper .content:last").before('<div class="content"><div class="subcontent">Third</div></div>');

.insertBefore() 用不同的语法做同样的事情,即选择要添加的元素,然后传递要添加的元素。

$("#wrapper .content:last").before('&lt;div class="content"&gt;&lt;div class="subcontent"&gt;Third&lt;/div&gt;&lt;/div&gt;');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="wrapper">
    <div class="content">
        <div class="subcontent">
            First
        </div>
    </div>
    <div class="content">
        <div class="subcontent">
            Second
        </div>
    </div>
</div>

【讨论】:

    【解决方案2】:

    你可以使用insertBefore():

    $('<div class="content"><div class="subcontent">Some stuff</div></div>').insertBefore('#wrapper > div:last');
    

    before():

    $('#wrapper > div:last').before('<div class="content"><div class="subcontent">Some stuff</div></div>');
    

    【讨论】:

      【解决方案3】:

      这就是我到达那里的方式:

      http://jsfiddle.net/lharby/00tk6avg/

      var htmlString = '<div class="subcontent">Some stuff</div>';
      
      $(htmlString).insertBefore('.content div:last');
      

      【讨论】:

        【解决方案4】:

        使用:last-of-type 选择最后一个元素并使用before() 追加新元素:

        $('.content:last-of-type').before('&lt;div class="new"&gt;test&lt;/div&gt;');
        .new { color:red }
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <div id="wrapper">
            <div class="content">
                <div class="subcontent">
                    First
                </div>
            </div>
            <div class="content">
                <div class="subcontent">
                    Second
                </div>
            </div>
        </div>

        【讨论】:

          【解决方案5】:

          使用insertBefore:

          $('<div class="content"><div class="subcontent">Third</div></div>').insertBefore('#wrapper .content:last');
          

          在目标之前插入匹配元素集中的每个元素。

          演示:http://api.jquery.com/insertBefore/

          【讨论】:

            【解决方案6】:
            $( "<p>Test</p>" ).insertBefore( "#wrapper > div:last-child" );
            

            【讨论】:

              【解决方案7】:

              您可以last() 选择最后一项,before() 用于追加

              $("#wrapper .content").last().before('&lt;div class="content"&gt;&lt;div class="subcontent"&gt;Some stuff&lt;/div&gt;&lt;/div&gt;');
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
              <div id="wrapper">
                  <div class=" content ">
                      <div class="subcontent ">
                          First
                      </div>
                  </div>
                  <div class="content ">
                      <div class="subcontent ">
                          Second
                      </div>
                  </div>
              </div>

              【讨论】:

                【解决方案8】:

                您可以使用 nth last child 来选择倒数第二个 div。 小提琴: http://jsfiddle.net/08ta9wnL/

                html:

                <div id="wrapper">
                    <div class="content">
                        <div class="subcontent">
                            First
                        </div>
                    </div>
                    <div class="content">
                        <div class="subcontent">
                            Second
                        </div>
                    </div>
                </div>
                

                javascript:

                $(document).ready(function(){
                    $("#wrapper div:nth-last-child(2)").append('<div class="content"><div class="subcontent">Some stuff</div></div>');
                });
                

                【讨论】:

                  【解决方案9】:

                  你可以这样做

                  $("#wrapper .content:last").before("<div class="content"><div class="subcontent">Some stuff</div></div>");

                  看看小提琴https://jsfiddle.net/48ebssso/

                  【讨论】:

                  • 这将作为孩子插入,而不是兄弟姐妹。
                  • 这将创建一个兄弟
                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2010-10-09
                  • 1970-01-01
                  • 1970-01-01
                  • 2023-03-12
                  • 1970-01-01
                  • 2017-07-11
                  • 2011-04-18
                  相关资源
                  最近更新 更多