Ausführen von jquery-Funktion erneut nach dem ajax-call
Gibt es eine Möglichkeit, ein Skript auszuführen, wieder nach einem ajax-call?
Ich habe photoswipe (lightbox) - jquery-plug-in ich call so:
jQuery(document).ready(function($){
if( $('.img-frame a').length > 0 ){
var myPhotoSwipe = $(".img-frame a").photoSwipe();
}
});
Ich habe auch ein ajax laden mehr Beiträge " - Funktion, und natürlich photoswipe zielt nicht geladene Bilder nach dem ersten laden der Seite.
Habe ich nicht mehr viel ajax-Kenntnisse, jede Hilfe auf diesem? Dank
UPDATE: Hier ist der 'laden' - Skript:
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;
});
});
Nenne ich es in WordPress functions.php auf diese Weise:
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');
wie machst du den ajax-Aufruf?
Bewegen Sie Ihre code-Funktion und rufe diese Funktion in
Ich habe bearbeitet die Frage, mit all den zugehörigen code
Bewegen Sie Ihre code-Funktion und rufe diese Funktion in
$(document).ready()
und nach ajax-requestIch habe bearbeitet die Frage, mit all den zugehörigen code
InformationsquelleAutor djwd | 2012-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Steckte es in eine Funktion, rufen Sie in auf pageload und in deinem ajax-Aufruf.
Durch die Art und Weise, wenn nicht müssen variable myPhotoSwipe, dann werden Sie nicht haben, um es. Sie sind auch mit
$('.img-frame a')
zweimal, also cache das Ergebnis.Und Ihre Last call:
Ich aktualisiert meine Antwort, Sie sind mit $.laden, nicht $.ajax.
Ja, das war ich, war verschwunden. Ok, ich bin fast da, es funktioniert nur wenn ich die doppelte der vollen Funktion in ajax-load-more.js, sonst bekomme ich setMyPhotoSwipe(); ist nicht definiert. (die ersten photoswipe nennen, es ist in einer anderen js-Datei). Aber wenn ich Duplikate der Funktion bekomme ich die Fehlermeldung " Uncaught-Code.PhotoSwipe.activateInstance: Nicht aktive Instanz eine andere Instanz ist bereits aktiv für dieses Ziel. Obwohl alles funktioniert, ich glaube nicht, dass es sehr "elegant"
(sorry, ich habe versucht zu formatieren, besser meinen Kommentar, aber ich lief die 5 Minuten Zeit)
Gut, dann haben Sie zu markieren, diese links, die bereits geladen sind, bevor ich aktualisiert meine Antwort, siehe Funktion
setPhotoSwipe()
. Zu Ihrem Fehler: die Funktion Definition außerhalbjQuery(document).ready
.InformationsquelleAutor iappwebdev
Es ist keine Delegierung für das plugin, ist es bis zu Autor das plugin zu integrieren. Warum nicht Cheaten: (sorry, nicht möglich, test-code, und nicht sicher sind, Ihre relevanten photoSwipe-plugin)
Ich weiß nicht, dieses plugin, aber ich bin sicher, Sie könnten versuchen,
BTW, deine Antwort ist genial Mann! und +1 von meiner Seite 🙂 ich habe auch nicht versucht, aber ich glaube, seine richtige!
Vielen Dank, dass war eine gute Idee, aber leider funktioniert nicht
InformationsquelleAutor A. Wolff
InformationsquelleAutor Muhammad Talha Akbar
Ich würde vorschlagen, die unter
nennen Sie auch das gleiche in ajax-calls
InformationsquelleAutor Murali Murugesan
Wie Morpheus sagte.
Erstellen Sie eine separate Funktion, fügen Sie Ihren code in das.
Aufrufen können Sie diese Funktion in Ihrem
$(document).ready()
Verwenden Sie dann die gleiche Funktion in der ajax-success-Pfad (check Dokumentation: http://api.jquery.com/jQuery.ajax/).
Alternativ können Sie auch dieses verwenden: http://api.jquery.com/ajaxStop/
Wird es erleichtern, Sie verwenden die gleiche Funktion, wenn Ihr jeden Ajax-Aufruf nicht.
InformationsquelleAutor Panagiotis Palladinos
Sorry ich bin ein Anfänger in jquery... Wie wäre es mit ajaxComplete()
http://api.jquery.com/ajaxcomplete/
Einmal hatte ich an eine Funktion ausführen nach ajax-call... und ajaxComplete() hat den trick...
InformationsquelleAutor Yogesh