Ich habe ein E-Commerce-Formular "in den Warenkorb" auf einer Drupal 7-Website.Call Jquery Funktion nach Drupal Ajax Update
Development site can be found here
I Größen von Kleidung wie Radio-Buttons am anzeigt.
Wenn der Benutzer auf eine Größe klickt, verwende ich jquery, um eine Wrapper-Klasse hinzuzufügen, damit ich die ausgewählte Option hervorheben kann. Wenn der Benutzer zum ersten Mal auf die Größe klickt, wird die jquery ausgelöst und der orange Hintergrund wird angezeigt - aber nur kurz. Ich glaube, dass ein Ajax-Aufruf die Steuerelemente auffrischt und die Wrapper-Klasse verliert. Wenn Sie erneut auf die gleiche Größe klicken, bleibt die Klasse haften.
Mein JQuery ist einfach:
(function($) {
$(document).ready(function(){
$('body').on('click','.commerce-add-to-cart .form-radios input',function(){
$(this.parentNode).removeClass('radio-checked');
$(this.parentNode).addClass('radio-checked');
});
});
})(jQuery);
Also, meine Frage ist - wie kann ich meine Jquery-Funktion aufrufen, wieder nach der Ajax ausgelöst hat? Gibt es einen Haken, den ich nicht kenne, der nach dem Ajax-Aufruf ausgelöst wird, oder gibt es einen Jquery-Befehl, der helfen könnte? Ich habe .setTimeout, .pause und einige andere Varianten ohne Erfolg versucht.
besser Hinzufügen der Klassen zu den Formularkomponenten sein können Sie 'ajaxStop' https: // api. jquery.com/ajaxStop/, dies ermöglicht es Ihnen, zu wissen, wann alle Ajax-Abfrage der Seite abgeschlossen ist und dann ausführen, was Sie wollen, zum zweiten Mal (verwenden Sie Parameter, um Ihre Ajax zu fangen) ODER Sie können 'ajaxComplete' ajaxComplete https://api.jquery.com/ajaxComplete/, lass dich nach jedem Ajax vollständig behandeln – Fky