在jquery中为accordion包装几个元素
我目前拥有以下html:在jquery中为accordion包装几个元素,jquery,jquery-ui,accordion,Jquery,Jquery Ui,Accordion,我目前拥有以下html: <h3 /> <p /> <p /> <ul /> <ol /> <h3 /> <p /> <p /> <ul /> <ol /> <h3 /> <p /> <p /> <ul /> <ol /> 我想创建一个手风琴,但为此,我需要以下内容: <h3 />
<h3 />
<p />
<p />
<ul />
<ol />
<h3 />
<p />
<p />
<ul />
<ol />
<h3 />
<p />
<p />
<ul />
<ol />
我想创建一个手风琴,但为此,我需要以下内容:
<h3 />
<div>
<p />
<p />
<ul />
<ol />
</div>
<h3 />
<div>
<p />
<p />
<ul />
<ol />
</div>
我尝试了以下方法,但无效:
$('.page2 .articleText p, .page2 .articleText ul').after('<div class="accordion">');
$('.page2 .articleText h4:not(:first)').before('</div>');
$('.page2.articleText p,.page2.articleText ul')。在('')之后;
$('.page2.articleText h4:not(:first)')。在('')之前;
非常感谢您的帮助
谢谢 下面是一个快速的“脏”解决方案,用于将一组元素包装到一个div中:
$(function(){
var h = $('h3');
var p1 = $('h3 + p');
var p2 = $('h3 + p + p');
var ul = $('h3 + p + p + ul');
var ol = $('h3 + p + p + ul + ol');
h.each(function (i) {
var group = $(p1[i]).add(p2[i]).add(ul[i]).add(ol[i]);
var div = $('<div />').append(group);
$(h[i]).after(div);
});
});
$(函数(){
风险值h=$('h3');
风险值p1=$('h3+p');
变量p2=$('h3+p+p');
var ul=$('h3+p+p+ul');
var ol=$('h3+p+p+ul+ol');
h、 每个(功能(i){
风险值组=$(p1[i])。增加(p2[i])。增加(ul[i])。增加(ol[i]);
var div=$('').append(组);
美元(h[i])。在(div)之后;;
});
});
我相信如果您提供了一些钩子,代码会简单得多:)您可以使用并选择和包装每个部分,如下所示:
$("h3").each(function() {
$(this).nextUntil("h3").wrapAll("<div />");
});
$(“h3”)。每个(函数(){
$(本).nextUntil(“h3”).wrapAll(“”);
});
您是否试图使用javascript将每个组的pf
p、p、ul、ol
元素封装在一个单独的
中?为什么不在服务器端创建所需的结构?