Existe-t-il un moyen de réexécuter un script après un appel ajax?Exécuter à nouveau la fonction jquery après un appel ajax
J'ai un photoswipe (lightbox) plug-in que j'appelle comme jquery ceci:
jQuery(document).ready(function($){
if($('.img-frame a').length > 0){
var myPhotoSwipe = $(".img-frame a").photoSwipe();
}
});
J'ai aussi un ajax 'charge plus les messages' fonction, et évidemment photoswipe ne cible pas les images chargées après la première page de chargement.
Je n'ai pas beaucoup de connaissances ajax, aucune aide à ce sujet? Merci
MISE À JOUR: Voici la 'charge plus' script:
jQuery(document).ready(function($) {
// The number of the next page to load (/page/x/).
var pageNum = parseInt(djwd_load_posts.startPage) + 1;
// The maximum number of pages the current query can return.
var max = parseInt(djwd_load_posts.maxPages);
// The link of the next page of posts.
var nextLink = djwd_load_posts.nextLink;
/**
* Replace the traditional navigation with our own,
* but only if there is at least one page of new posts to load.
*/
if(pageNum <= max) {
// Insert the "More Posts" link.
$('#content')
.append('<div class="lp-placeholder-'+ pageNum +'"></div>')
.append('<p id="lp-load-posts" class="long-button"><a href="#">Load More Posts<i class="icon-chevron-down icon-large"></i></a></p>');
// Remove the traditional navigation.
$('#nav-below').remove();
}
/**
* Load new posts when the link is clicked.
*/
$('#lp-load-posts a').click(function() {
// Are there more posts to load?
if(pageNum <= max) {
// Show that we're working.
$(this).text('Loading posts...');
$('.lp-placeholder-'+ pageNum).load(nextLink + ' .post',
function() {
$(this).hide().fadeIn(700);
// Update page number and nextLink.
pageNum++;
nextLink = nextLink.replace(/\/page\/[0-9]?/, '/page/'+ pageNum);
// Add a new placeholder, for when user clicks again.
$('#lp-load-posts')
.before('<div class="lp-placeholder-'+ pageNum +'"></div>')
// Update the button message.
if(pageNum <= max) {
$('#lp-load-posts a').text('Load More Posts');
} else {
$('#lp-load-posts a').text('No more posts to load.');
}
}
);
} else {
$('#lp-load-posts a').append('.');
}
return false;
});
});
Je l'appelle dans Wordpress functions.php cette façon:
function djwd_ajax_load_init() {
global $wp_query;
if(!is_singular()) {
wp_enqueue_script('ajax-load-posts', get_template_directory_uri() . '/js/ajax-load-posts.js', array('jquery'), true);
$max = $wp_query->max_num_pages;
$paged = (get_query_var('paged') > 1) ? get_query_var('paged') : 1;
wp_localize_script(
'ajax-load-posts',
'djwd_load_posts',
array(
'startPage' => $paged,
'maxPages' => $max,
'nextLink' => next_posts($max, false)
)
);
}
}
add_action('template_redirect', 'djwd_ajax_load_init');
Comment faites-vous l'appel ajax? –
Déplacez votre code pour fonctionner et appelez cette fonction dans '$ (document) .ready()' et après une requête ajax – Morpheus
J'ai édité la question avec tout le code correspondant – djwd