Karl!

That did work!  

It worked also without the function wrapper:

$("div.accordion h3").each( function() {
        $(this).nextAll().wrapAll("<div class='accordionInner'></div>");
});

Can you explain wrapping it in:

$(function() {
        //...
});

Thanks again!!

---->N


.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:
||:.

Nathan Young
Cisco.com->Interface Development
A: ncy1717
E: [EMAIL PROTECTED]  

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Karl Rudd
> Sent: Tuesday, February 13, 2007 4:21 PM
> To: jQuery Discussion.
> Subject: Re: [jQuery] wrapping or cloning problem
> 
> Try this:
> 
> $(function() {
>       $("div.accordion h3").each( function() {
>               $(this).nextAll().wrapAll("<div 
> class='accordionInner'></div>");
>       });
> });
> 
> The problem was that "wrapAll" was wrapping up all the elements of all
> the accordion DIVs into one.
> 
> Sidenote: The sample webpage was a bit messed up, it didn't have a
> head or body, the script tags where inside the body, and the jquery.js
> file wasn't actually present (404 error). I assume it's just some copy
> paste errors.
> 
> Karl Rudd
> 
> On 2/14/07, Nathan Young -X (natyoung - Artizen at Cisco)
> <[EMAIL PROTECTED]> wrote:
> > I posted my sample HTML here:
> >
> > http://ncyoung.com/temp/simplify.html
> >
> >
> >
> > 
> .:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:.
> _.:||:._.:
> > ||:.
> >
> > Nathan Young
> > Cisco.com->Interface Development
> > A: ncy1717
> > E: [EMAIL PROTECTED]
> >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED] On Behalf Of Nathan Young
> > > -X (natyoung - Artizen at Cisco)
> > > Sent: Tuesday, February 13, 2007 10:55 AM
> > > To: jQuery Discussion.
> > > Subject: Re: [jQuery] wrapping or cloning problem
> > >
> > > Hi John.
> > >
> > > Thanks for taking a stab at this!  Your solution does fit 
> my problem
> > > statement, and I agree it's a clever approach.
> > >
> > > I grabbed the function you sent and I got wrapall from the
> > > URL you sent.
> > >
> > > I'm not getting good behavior overall from it and I'm new 
> enough to
> > > jQuery that I can't tell where the problem lies... 
> probably between my
> > > eyes and keyboard :)
> > >
> > > I'm attaching an HTML file with my attempt (and some commented out
> > > cruft), and I hope it makes it through the mailer.  If it
> > > doesn't let me
> > > know and I'll find somewhere to post it.
> > >
> > > Also I can't help thinking that preparing the right 
> "each" callback
> > > function could let me do this with core jQuery and avoid writing
> > > extension functions.
> > >
> > > I'm encountering something a little strange with each
> > > functions though.
> > > This works fine:
> > >
> > > $("[EMAIL PROTECTED]").each(function(i){$(this).prepend("h
> > > ey!");)});
> > >
> > > I get a "hey" inside and at the start of each accordion div.
> > >
> > > When I add this line:
> > >
> > > $("[EMAIL PROTECTED]").each(function(i){$(this).prepend("h
> > > ey!");$(th
> > > is).prepend($(this).children("div/h3").clone())});
> > >
> > > Not only does the second thing not work (and I've racked my brains
> > > trying a variety of constructions there), but I stop getting
> > > consistent
> > > "hey"'s in the right places.
> > >
> > > ---------->Nathan
> > >
> > >
> > > .:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:.
> > > _.:||:._.:
> > > ||:.
> > >
> > > Nathan Young
> > > Cisco.com->Interface Development
> > > A: ncy1717
> > > E: [EMAIL PROTECTED]
> > >
> > > > -----Original Message-----
> > > > From: [EMAIL PROTECTED]
> > > > [mailto:[EMAIL PROTECTED] On Behalf Of John Resig
> > > > Sent: Monday, February 12, 2007 11:32 PM
> > > > To: jQuery Discussion.
> > > > Subject: Re: [jQuery] wrapping or cloning problem
> > > >
> > > > Hi Nathan -
> > > >
> > > > I'll take a stab at it!
> > > >
> > > > A while back I wrote a nifty little pair of plugins:
> > > > http://john.jquery.com/jquery/test/nextuntil.html
> > > >
> > > > .nextUntil() and .wrapAll(). wrapAll is perfect for you,
> > > > unfortunately, nextUntil won't do the trick - you need 
> a .nextAll()
> > > >
> > > > So here's a .nextAll:
> > > >
> > > > $.fn.nextAll = function() {
> > > >     var match = [];
> > > >
> > > >     // We need to figure out which elements to push 
> onto the array
> > > >     this.each(function(){
> > > >         // Traverse through the sibling nodes
> > > >         for( var i = this.nextSibling; i; i = i.nextSibling ) {
> > > >             // Make sure that we're only dealing with elements
> > > >             if ( i.nodeType != 1 ) continue;
> > > >
> > > >             // Otherwise, add it on to the stack
> > > >             match.push( i );
> > > >         }
> > > >     });
> > > >
> > > >     return this.pushStack( match );
> > > > };
> > > >
> > > > And now we can do this:
> > > > $("div.accoridan h3").nextAll().wrapAll("<div
> > > > class='accordianInner'></div>");
> > > >
> > > > I think that's a pretty nifty solution :-) Let me know if
> > > you want me
> > > > to setup a demo.
> > > >
> > > > --John
> > > >
> > > > On 2/12/07, Nathan Young -X (natyoung - Artizen at Cisco)
> > > > <[EMAIL PROTECTED]> wrote:
> > > > > Hi All.
> > > > >
> > > > > I want to accordion an existing content format, and I think
> > > > that I need
> > > > > to insert a wrapper element.  First I would love a sanity
> > > > check on my
> > > > > general approach then maybe someone can critique the
> > > > manipulation I'm
> > > > > trying.
> > > > >
> > > > > Here's my content:
> > > > >
> > > > > <div class="accordion">
> > > > >    <h3>heading</h3>
> > > > >    <arbitrary content/>
> > > > > </div>
> > > > >
> > > > > I can't change the content and I need the heading to be
> > > used as the
> > > > > clickable bar.
> > > > >
> > > > > The approach I want to take (on a high level) is:
> > > > >  - put a div around everything after the h3 in the 
> dives classed
> > > > > "accordion"
> > > > >  - put events on the h3 to show the associated div 
> and hide the
> > > > > non-associated divs
> > > > >
> > > > > The js I would use is something like:
> > > > >
> > > > >
> > > > $("[EMAIL PROTECTED]").removeClass("accordion").addClass("
> > > > accordionI
> > > > > nner");
> > > > > $("[EMAIL PROTECTED]").wrap('<div
> > > > class="accordion"></div>');
> > > > >
> > > > > //no luck here:
> > > > >
> > > > $("div:[EMAIL PROTECTED]").each(function(i){$(this).prepend($
> > > > (this).chi
> > > > > ldren("[EMAIL PROTECTED]:firstChild)})
> > > > >
> > > > > //nor with this:
> > > > >
> > > > $("[EMAIL PROTECTED]").each(function(i){$(this).children("
> > > > [EMAIL PROTECTED]
> > > > > =accordionInner]:first-child").clone().prependTo(this)})
> > > > >
> > > > >
> > > > > All suggestions welcome!
> > > > >
> > > > > ----------->Nathan
> > > > >
> > > > >
> > > > >
> > > > >
> > > > .:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:._.:||:.
> > > > _.:||:._.:
> > > > > ||:.
> > > > >
> > > > > Nathan Young
> > > > > Cisco.com->Interface Development
> > > > > A: ncy1717
> > > > > E: [EMAIL PROTECTED]
> > > > >
> > > > > _______________________________________________
> > > > > jQuery mailing list
> > > > > [email protected]
> > > > > http://jquery.com/discuss/
> > > > >
> > > >
> > > > _______________________________________________
> > > > jQuery mailing list
> > > > [email protected]
> > > > http://jquery.com/discuss/
> > > >
> > >
> > > _______________________________________________
> > > jQuery mailing list
> > > [email protected]
> > > http://jquery.com/discuss/
> > >
> >
> > _______________________________________________
> > jQuery mailing list
> > [email protected]
> > http://jquery.com/discuss/
> >
> 
> _______________________________________________
> jQuery mailing list
> [email protected]
> http://jquery.com/discuss/
> 

_______________________________________________
jQuery mailing list
[email protected]
http://jquery.com/discuss/

Reply via email to