混淆 jQuery 中的 wrapAll
Confusing wrapAll in jQuery
我在下面的几里里有几个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 ?
使用.each()
遍历每个<li>
然后操作它的children<p>
$('ul li').each(function(){
$('> p:not(:first-child)',this).wrapAll('<div/>');
});
为什么你的代码不起作用?
$('ul li >p:not(:first-child)')
获取所有 <p>
的集合,这些 child 不是他们 parent 的第一个 child。然后它将它们包装在 <div>
中。此集合不考虑单独的 <li>
parents.
The problem is, li > p:not(:first-child)
it collects all child p tags except the first child.
so You need to use .each()
function iterate to all 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>
我在下面的几里里有几个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 ?
使用.each()
遍历每个<li>
然后操作它的children<p>
$('ul li').each(function(){
$('> p:not(:first-child)',this).wrapAll('<div/>');
});
为什么你的代码不起作用?
$('ul li >p:not(:first-child)')
获取所有 <p>
的集合,这些 child 不是他们 parent 的第一个 child。然后它将它们包装在 <div>
中。此集合不考虑单独的 <li>
parents.
The problem is,
li > p:not(:first-child)
it collects all child p tags except the first child.so You need to use
.each()
function iterate to allli
.
$('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>