首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混淆wrapAll中的jQuery

混淆wrapAll中的jQuery
EN

Stack Overflow用户
提问于 2016-07-20 03:58:12
回答 2查看 41关注 0票数 2

我在几个里有几个p,如下所示,同时也是https://jsfiddle.net/y5zn538e/

代码语言:javascript
复制
<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,这样它的包装就像下面的第二个。

代码语言:javascript
复制
<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>

我试过如下:

代码语言:javascript
复制
 $('ul li >p:not(:first-child)').wrapAll('<div></div>'); 

然而,这似乎不起作用。我的意思是,它所做的一切,都要把它包起来。我想要在每一个里包扎一个div?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-20 04:25:20

问题是,li > p:not(:first-child)收集除第一个子标记之外的所有子p标记。 因此,您需要使用.each()函数迭代所有li

代码语言:javascript
复制
$('ul li').each(function(){
  $(this).find('p:not(:first-child)').wrapAll('<div></div>'); 
});

代码语言:javascript
复制
  $('ul li').each(function(){
     		$(this).find('p:not(:first-child)').wrapAll('<div></div>'); 
     });
代码语言:javascript
复制
div{
  color: red;
  }
代码语言:javascript
复制
<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>

票数 3
EN

Stack Overflow用户

发布于 2016-07-20 04:24:58

使用.each()对每个<li>进行迭代,然后操作其子级<p>

代码语言:javascript
复制
$('ul li').each(function(){
    $('> p:not(:first-child)',this).wrapAll('<div/>');
});

更新Fiddle

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38472080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档