There is a plugin called nextUntil that you may be able to use. An
example is available at http://dev.jquery.com/~john/jquery/test/nextuntil.html

Although I'm surprised it isn't in SVN or on the plugins page (perhaps
there are bugs?).

On Aug 2, 3:48 pm, DaveG <[EMAIL PROTECTED]> wrote:
> I'm trying to enclose sections of the dom with a DIV tag. Basically I want 
> all elements between headings (and including the top-most heading) enclosed 
> in a DIV.
>
> My approach is to scan through the DOM, find a header tag, insert an opening 
> DIV tag, continue scanning until I hit the next header, close the prior div, 
> and open a new div tag. Thus:
> <h2>heading 2a<\h2>
> ...html tags...
> <h3>heading 3a<\h3>
> ...html tags...
> <h2>heading 2b<\h2>
> ...html tags...
>
> Becomes (indent added for clarity only):
> <div>
>    <h2>heading 2a<\h2>
>    ...html tags...
> <\div>
> <div>
>    <h3>heading 3a<\h3>
>    ...html tags...
> </div>
> <div>
>    <h2>heading 2b<\h2>
>    ...html tags...
> </div>
>
> I'm using .before to add the starting <div> tag, but it looks like .before 
> automatically closes open tags. I don't see any mention of this in the docs. 
> How would I go about adding an open ended tag to the DOM?
>
> Alternately, is there a way of identifying each section between headers so I 
> can .wrap with a div?
>
> Here's the code snippet:
>    var open = false;
>    $('#text').children().each(function(i) {
>       if( this.nodeName.match(/^H\d+$/) ) {
>          if (open) {
>             $(this).before('</div>');
>          }
>          $(this).before('<div class="xxx">');
>          open = true;
>       }
>    });

Reply via email to