ah, i'm sorry, i found the problem, in another function that is  
running on document.ready. (it's converting the sidenav into a  
rounded box by grabbing the html and recreating the div, so the click  
handlers are getting lost. it's an old function that i'll have to  
rewrite in a more JQ way.)

-p

On Oct 18, 2006, at 2:33pm, Klaus Hartl wrote:

>
>
> Pascal schrieb:
>> hey gang--
>>
>> i got a bit of a stumper for ya, trying to bind a function to the
>> click event of each link in a dynamically generated list.
>>
>> i have a bunch of long content pages that we're breaking up into
>> subpages, with a sidenav to navigate through them. the markup for
>> each page is as follows:
>>
>> <div class="page">
>> <h3>Page One Title</h3>
>> <p>....</p>
>> <p>....</p>
>> </div>
>>
>> <div class="page">
>> <h3>Another Page Title</h3>
>> <p>....</p>
>> <p>....</p>
>> </div>
>>
>>
>> here's the function that sets up the list of links and stuffs them
>> into the sidenav.
>>
>> $('.page').each(function(i) {
>>      var title = $('h3',this).eq(0).text();
>>      var link = $('<li><a href="#page'+(i+1)+'">'+title+'</a></li>');
>>      $('.sidenav ul').append(link);
>>      $('a',link).click(function() {
>>              alert(1);
>>              // $('.page',pages).hide();
>>              // $(page).show();
>>      });
>> });
>> $('.page').hide().eq(0).show();
>>
>>
>> it grabs the text of the first H3 in each section to use as the link
>> text. it builds an LI element containing the link, then appends that
>> to the sidenav. then it tries to assign a click handler to the link.
>>
>> i've commented out the functional part of the click function and just
>> put in an alert for testing, but the function isn't firing when i
>> click these links. am i missing something?
>>
>> thanks for any help,
>>
>> -p
>
>
> I see one thing that may cause the problem: your variable link is a
> jQuery object. This is passed as context a few lines later on, but you
> have to pass a DOM node as context to the $ function.
>
> Try this:
> $('a', link[0]).click(...);
>
>
> Or to overall shorten the code:
>
> var link = $('<li> ... </li>').appendTo('.sidenav ul')[0];
> $('a', link).click(...);
>
>
> Does that help?
>
> -- Klaus
>
>
> _______________________________________________
> jQuery mailing list
> discuss@jquery.com
> http://jquery.com/discuss/
>
>


_______________________________________________
jQuery mailing list
discuss@jquery.com
http://jquery.com/discuss/

Reply via email to