[英]jQuery: wrap a div around p not:first elements inside a div
我一直在努力解决这个问题,但似乎再也无法思考了。 我有这样的结构:
<div id="team-101">
<p>Description 1</p>
<p>Description 2</p>
<p>Description 3</p>
<p>Description 4</p>
<ul><li>Some stuff</li></ul>
</div>
<div id="team-202">
<p>Description 1</p>
<p>Description 2</p>
<p>Description 3</p>
<p>Description 4</p>
<ul><li>Some stuff</li></ul>
</div>
(等)我想做的是将倒数第二个文本段落放入div中,然后可以在每个主要div中隐藏/取消隐藏:
<div id="team-101">
<p>Description 1</p>
<div id="desc-101">
<p>Description 2</p>
<p>Description 3</p>
<p>Description 4</p>
</div>
<ul><li>Some stuff</li></ul>
</div>
我尝试了一些
$('div[id^=team-]').each(function() {
$('p:first', this).after('<div>');
$('p:last', this).after('</div>');
但是开头的div随后会自动关闭,并且不包含以下段落。 这可能是儿童游戏,我太傻了。
DOM不能这样工作,您不能单独插入开始和结束标记,可以选择p
.wrapAll()
,并使用.wrapAll()
方法用DIV元素包装所有.wrapAll()
:
$('div[id^=team-]').each(function() {
var n = this.id.replace('team-', '');
$(this).children('p').slice(1).wrapAll('<div id="desc-'+n+'"/>');
});
定位段落,排除第一个段落,然后用wrapAll
包裹它们
$('div[id^=team-]').each(function() {
$('p:not(:first)', this).wrapAll('<div id="'+this.id.replace('team','desc')+'" />')
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.