【问题标题】:Confusing wrapAll in jQueryjQuery 中令人困惑的 wrapAll
【发布时间】:2016-11-23 03:33:36
【问题描述】:

我在下面的几个 li 中有几个 p 和 https://jsfiddle.net/y5zn538e/

<ul>
  <li>
    <p> Hello 1</p>
    <p> Hello 2</p>
    <p> Hello 3</p>
  </li>
  <li>
    <p> Hello 4</p>
    <p> Hello 5</p>
    <p> Hello 6</p>
  </li>
</ul>

我想包装一个 div,使它像下面的第二个一样包装

<ul>
  <li>
    <p> Hello </p>
    <div>
      <p> Hello </p>
      <p> Hello </p>
    </div>
  </li>
  <li>
    <p> Hello </p>
    <div>
      <p> Hello </p>
      <p> Hello </p>
    </div>
  </li>
</ul>

我尝试如下:

 $('ul li >p:not(:first-child)').wrapAll('<div></div>'); 

但是,这似乎不起作用..我的意思是它所做的一切都需要所有 p 并包装它。我想在每个 li 中包含一个 div 吗?

【问题讨论】:

    标签: javascript jquery html wrapall


    【解决方案1】:

    使用.each() 遍历每个&lt;li&gt;,然后操作其子&lt;p&gt;

    $('ul li').each(function(){
        $('> p:not(:first-child)',this).wrapAll('<div/>');
    });
    

    Updated Fiddle


    为什么你的代码不起作用?

    $('ul li &gt;p:not(:first-child)') 获取所有&lt;p&gt; 的集合,这些&lt;p&gt; 不是其父级的第一个子级。然后将它们包装在&lt;div&gt; 中。此集合不考虑单独的&lt;li&gt; 父母。

    【讨论】:

      【解决方案2】:

      问题是,li &gt; p:not(:first-child) 它收集了除第一个孩子之外的所有子 p 标签。

      所以您需要使用.each() 函数迭代所有li

      $('ul li').each(function(){
        $(this).find('p:not(:first-child)').wrapAll('<div></div>'); 
      });
      

        $('ul li').each(function(){
           		$(this).find('p:not(:first-child)').wrapAll('<div></div>'); 
           });
      div{
        color: red;
        }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <ul>
            <li>
               <p> Hello 1</p> 
               <p> Hello 2</p > 
               <p> Hello 3</p> 
            </li> 
            <li>
               <p> Hello 4</p> 
               <p> Hello 5</p > 
               <p> Hello 6</p> 
            </li> 
           </ul>

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-21
        • 2022-01-17
        • 2018-02-26
        • 1970-01-01
        • 1970-01-01
        • 2012-09-22
        相关资源
        最近更新 更多