html - Applying jQuery code to AJAX loaded content -
i have these html lines
<h1 class="trigger">headline one</h1> <div class="toggle_container"> body text 1 </div>
and jquery code in <head>
section of site
$(document).ready( function() { $('.trigger').not('.trigger_active').next('.toggle_container').hide(); $('.trigger').click( function() { var trig = $(this); if ( trig.hasclass('trigger_active') ) { trig.next('.toggle_container').slidetoggle('slow'); trig.removeclass('trigger_active'); } else { $('.trigger_active').next('.toggle_container').slidetoggle('slow'); $('.trigger_active').removeclass('trigger_active'); trig.next('.toggle_container').slidetoggle('slow'); trig.addclass('trigger_active'); }; return false; }); });
after page loaded , jquery code applied, html output looks this:
<h1 class="trigger">headline one</h1> <div class="toggle_container" style="display: none;"> body text 1 </div>
so far works fine. here comes problem: when i'm loading new html block ajax - looks this:
<h1 class="trigger">headline two</h1> <div class="toggle_container"> body text 2 </div>
... doesn't rendered above jquery code. how can apply jquery code new loaded html block?
edit: here's ajax
jquery(document).ready(function($) { // number of next page load (/page/x/). var pagenum = parseint(pbd_alp.startpage) + 1; // maximum number of pages current query can return. var max = parseint(pbd_alp.maxpages); // link of next page of posts. var nextlink = pbd_alp.nextlink; /** * replace traditional navigation our own, * if there @ least 1 page of new posts load. */ if(pagenum <= max) { // insert "more posts" link. $('#content') .append('<div class="pbd-alp-placeholder-'+ pagenum +'"></div>') .append('<p id="pbd-alp-load-posts"><a href="#">↓ archive</a></p>'); // remove traditional navigation. $('.navigation').remove(); } /** * load new posts when link clicked. */ $('#pbd-alp-load-posts a').click(function() { // there more posts load? if(pagenum <= max) { // show we're working. $(this).text('...'); $('.pbd-alp-placeholder-'+ pagenum).load(nextlink + ' .post', function() { // update page number , nextlink. pagenum++; nextlink = nextlink.replace(/\/page\/[0-9]?/, '/page/'+ pagenum); // add new placeholder, when user clicks again. $('#pbd-alp-load-posts') .before('<div class="pbd-alp-placeholder-'+ pagenum +'"></div>') // update button message. if(pagenum <= max) { $('#pbd-alp-load-posts a').text('older entries'); } else { $('#pbd-alp-load-posts a').text('all items loaded.'); } } ); } else { $('#pbd-alp-load-posts a').append('.'); } return false; }); });
after ajax content appended dom want run following piece of code again:
$('.trigger').not('.trigger_active').next('.toggle_container').hide();
then want make sure use event delegation clicking work on dynamically inserted content:
$(document).on('click', '.trigger', function() { //the rest of code });
Comments
Post a Comment