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("hey!");)});

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("hey!");$(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/

Reply via email to