Neu jQuery Code wird korrekt eingebunden, aber reagiert nicht

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Moin Moin,

wir haben einige Zeilen Javascript / jQuery Code, der auf der Produktdetailseite arbeitet. Nun haben auch wir festgestellt, dass uns Ajax da zwischen die Beine grätscht und die Scripte nach dem wechsel einer Variation nicht mehr funktionieren..
Also habe ich das Forum durchsucht und bin auf die Lösung per Plugin und Hook 45 gestoßen, also fix umgesetzt und der Hook tut ansich sein Werk!

Leider habe ich nun das Problem, dass der Hook zwar funktioniert, ein einfaches console. log ist kein Problem, aber die einigen Zeilen Javascript/jQuery Code, die eigentlich benötigt werden agieren nicht wie geplant mit den Elementen im DOM.
Ich nehme an, dass hier die Reihenfolge des Ladens der DOM Struktur ein Problem ist..

Kennt da vielleicht jemand eine Lösung?

So sieht es derzeit in der "Hook-Datei" aus:

Code:
<?php

$args_arr["objResponse"]->script("jQuery(function($) {  $(document).ready(function(){//Produkt-Konfigurator: Wechsel der Größenreihe nach ausgewählter Farbe
    $('.product-configuration').find('button.colorswatch').on('click',function(){
        $(this).closest('.row').find('button').removeClass('active');
        $(this).addClass('active');
        $(this).closest('.col-md-10').find('div.sizesrow').hide();
        $(this).closest('.col-md-10').find('div[data-id=\"'+$(this).attr('data-id')+'\"]').show();
    });
    
    //Kategorieseite: Einblenden des Hovermenüs
    $('#product-list').find('div.image-wrapper').hover(
        function(){
            $(this).find('div.kategorieHover').slideDown('fast');   
        }, function(){
            $(this).find('div.kategorieHover').slideUp('fast');   
        }
    );
    
    //Kategorieseite: Wechsel des VaterBildes bei Hovern auf spezifisches Produkt
    $('a.hoverelement').hover(
        function() {
          var img    = $(this).attr('data-img');
          var finder = $(this).attr('original-img');
          $('img[data-src=\"'+finder+'\"]').attr('src',img);
        }, function() {
            var img = $(this).attr('original-img');
            $('img[data-src=\"'+img+'\"]').attr('src',img);
        }
      );
    
    //Produktdetailseite: Produkte Slider, wechseln der Produktpalette
    $('ul.productNav').find('a').on('click',function(){
        var element = $(this).attr('data-id');
        $(this).closest('ul').find('li').removeClass('active');
        $(this).closest('li').addClass('active');
        $(this).closest('div.modal-content').find('div.katSliders').hide();
        $(this).closest('div.modal-content').find('#'+element).show();
    });
    console.log('max Skript');
});
});
");

?>

Das console.log wird anstandslos ausgeführt und auch die anderen Sachen geben keine Fehler aus! Sie werden lediglich nicht getriggert..
Desweiteren versuche ich eigentlich den benötigten Code automatisch aus mehreren Dateien laden zu lassen, leider bekomme ich da immer nur eine 0 zurück?
Sähe dann so aus:

Code:
<?php
$js_content = file_get_contents('./js/js_max.js');
$js_content .= file_get_contents('./js/js_maxim.js');
$js_content  .= file_get_contents('./js/js_sonstiges.js');

$args_arr["objResponse"]->script("$js_content");
?>

Vielen Dank schon einmal im Voraus.. In letzter Zeit bin ich ja doch öfters hier... Es fällt immer wieder etwas neues an.

Beste Grüße,
Max
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.694
1.610
Berlin
Wenn dein code vorher funktionierte und nur durch das nachladen mittels ajax gestört wird, hättest du das mit dem on() beheben können.

Also würde ich dann lieber das hover und click sowie andere events mit dem on() bauen, damit die evenrs nach dem ajax neu initialisiert werden wäre das z.b.

Ungetestet und nur als Beispiel zu sehen
Code:
$('.product-configuration').on('click', 'button.colorswatch',   function(){

Ansonsten wäre ein link zum anschauen nicht schlecht, denn es könnte ja sein das du ein zeitliches Problem hast.
 
  • Gefällt mir
Reaktionen: Horus Sirius

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.878
519
Halle
Hallo,

die einfachste Lösung wäre hier - wie von css-umsetzung vorgeschlagen - mit Event-Delegation zu arbeiten. Dabei bindest du das Event nicht direkt an ein Element, sondern an ein Übergeordnetes mit Verweis auf das eigentliche Element. Du "delegierst" das Ereignis an einen anderen "Verantwortlichen". Der Vorteil dabei ist, dass der Event-Handler erhalten bleibt, auch wenn das Ziel-Element entfernt und neu eingefügt wird.
Also statt das Hover-Event direkt an die Elemente zu binden
JavaScript:
$('#product-list').find('div.image-wrapper').hover(...
geht das auch per Delegation an ein Übergeordnetes (hier beispielhaft einfach an body):
JavaScript:
$('body').on('hover', '#product-list div.image-wrapper', ...
 
  • Gefällt mir
Reaktionen: Horus Sirius

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Vielen Dank schon einmal für eure Antworten :)

An die Lösung die Events an etwas übergeordnetes, das einfachste ist hier das 'document' Element, hatte ich auch schon gedacht. Leider ist es dann so, dass ich nicht mehr das angesprochene Element direkt als Objekt 'this' zur Verfügung habe, oder muss man es dann nur anders abgreifen?

Wir haben nun eine Lösung.. Etwas doppelt gemoppelt, aber es funktioniert.
Das Javascript bleibt wie es ist und wird doppelt eingebunden.
Erste Stelle: Per Plugin, dieses bindet das Javascript automatisch ein.
Zweite Stelle: Im Template, hier mit einer Besonderheit. Gestern bin ich auf einen JS Eventhandler vom JTL Shop gestoßen: 'evo:contentLoaded'
Ich horche auf diesen Handler und füge dort meinen Code ein. Funktioniert tadellos. Die Einbindung über das Plugin sorgt dafür, dass das Javascript bei Seitenaufruf zur Verfügung steht, die Einbindung über das Template sorgt dafür, dass es nach dem Ajax Aufruf wieder zur Verfügung steht.

Mit der file_get_contents Geschichte bin ich leider auch nicht weitergekommen, würde aber ja scheinbar auch nicht helfen, da der HOOK selbst scheinbar nicht der "richtige" für mich ist.

Die Lösung ist möglicherweise etwas quick & dirty, sollte aber vorerst funktionieren.
Beste Grüße
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.694
1.610
Berlin
Ich sehe bei unserer vorgeschlagenen Lösung keine Probleme mit dem this. Ich wäre eher vorsichtig mit dem event contentloaded. Da hatte ich schon öfter mal Timing Probleme.
 

MaxWe

Sehr aktives Mitglied
6. August 2018
311
42
Hamburg
Ich sehe bei unserer vorgeschlagenen Lösung keine Probleme mit dem this.
Hmm, bisher hatte ich immer das Problem, dass dann das document selbst im this lag und nicht das selektierte.
$(document).on('click','selektor',function(){...}); Hier ist this = document bei mir.

Ich wäre eher vorsichtig mit dem event contentloaded. Da hatte ich schon öfter mal Timing Probleme.
Ich werde es dennoch erst einmal so lassen. Sollte sich herausstellen, dass ich mit der vorgeschlagenen Lösung die Elemente trotzdem ordentlich ansprechen kann, stelle ich es nach und nach noch um.
Bisher funktioniert es, sollte ein Fehler auftreten habe ich aber aufjedenfall schon einmal einen Ansatz, vielen Dank also für die Warnung :)
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Workflow - Positionen an Dropshipping-Lieferant mailen. Warum funktioniert dieser Code nicht? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Error Code = 0 bei Installation JTL-Shop 5.3.1 Einrichtung JTL-Shop5 3
Neu QR Code auf Rechnungen will zuviel haben User helfen Usern - Fragen zu JTL-Wawi 0
EAN-Code von Umverpackungen hinterlegen JTL-Wawi 1.7 3
Neu jtl wawi Versanddatenexport Originalmeldung: In der Sendung trat mindestens ein harter Fehler auf. Code: 1101 Schnittstellen Import / Export 2
Neu Gutscheine mit Anzahl und Code erstellen ? Allgemeine Fragen zu JTL-Shop 1
Neu QR Code Zahlung User helfen Usern - Fragen zu JTL-Wawi 0
Neu get Coupon Code from order Technische Fragen zu Plugins und Templates 6
Neu Verbesserungsvorschlag: Wareneinigang ohne EAN Code JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 6
Neu RKSV QR-Code auf Bon Einrichtung / Updates von JTL-POS 6
Neu Passwort vergessen Mail wird nicht gesendet in 5.3.1 JTL-Shop - Fehler und Bugs 1
Neu JTL-WMS Mobile Artikelname wird nicht mehr vollständig angezeigt JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 0
Neu Seitennavigation wird doppelt angezeigt Allgemeine Fragen zu JTL-Shop 0
Eigenes Feld wird nicht angezeigt JTL-Wawi 1.8 2
Bestellvorschläge - Lagerbsestand in "Bestand gesamt" wird nicht angezeigt JTL-Wawi 1.8 0
Neu Auftragszahlung über Kasse, Auftrag wird nicht als "Verpackt und Versendet" markiert JTL-POS - Fehler und Bugs 1
Neu Artikel im Warenkorb wird von 1 auf null runtergesetzt. Anstatt es zu entfernen wird es automatisch wieder auf 1 gesetzt Allgemeine Fragen zu JTL-Shop 6
Selbstabholer wird zu DHL national geändert. JTL-Wawi 1.8 2
Neu JTL POS wird nicht an WaWi angebunden Einrichtung / Updates von JTL-POS 2
Globaler Mindestbestand bei neuen Artikeln wird trotz Nullbestand nicht in den Bestellvorschlägen berücksichtigt JTL-Wawi 1.6 1
Neu Neues 5.3 Feature Versandklassen-Assistent wird nicht angezeigt Gelöste Themen in diesem Bereich 5
Neu Bankverbindung wird nicht in Aufträgen/Rechnungen aus Abonnements aktualisiert User helfen Usern - Fragen zu JTL-Wawi 0
Wird jetzt das Widerrufsrecht aufgehoben? Gelöste Themen in diesem Bereich 3
Rechnungsentwurf wird nicht zur Rechnung bei Auslieferung JTL-Wawi 1.8 8
Bestand von Kinderartikeln wird im Vaterartikel zusammenaddiert JTL-Wawi 1.8 1
Neu Rechnungsdatum ist gleich Lieferdatum wird nicht erkannt User helfen Usern - Fragen zu JTL-Wawi 1
Neu PrestaShop Connector für Prestashop 8 mit PHP 8.2 wird nicht unterstützt PrestaShop-Connector 3
Neu Auftrag mit Freiposition Menge 0 läßt sich nicht ausliefern + wird nicht auf Lieferschein angezeigt User helfen Usern - Fragen zu JTL-Wawi 1
Neu Merkmalübersetzung wird im Shop nicht angezeigt JTL-Shop - Fehler und Bugs 2
Neu JTL zu Shopify Bestand wird nicht aktualisiert Shopify-Connector 0
Neu Wo kann ich einstellen, welche Rechnungsvorlage "gezogen" wird Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 13
Neu FBA Lager wird nicht angelegt Amazon-Anbindung - Fehler und Bugs 14
Neu Rechnung wird nicht auf englisch gespeichert Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 3
In Diskussion Wareneingang Packtisch 1.8.12.0: Seriennumer wird abgeschnitten. JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 1
Neu Fehler: Sonderpreis falsch formatiert, wird nicht importiert; obwohl importiert genau wie exportiert User helfen Usern - Fragen zu JTL-Wawi 0
Neu Versandmail / Versandbenachrichtigung wird nicht gesendet JTL-Wawi - Fehler und Bugs 1
Neu Menüleiste wird plötzlich in der Mitte von der Seite angezeigt Allgemeine Fragen zu JTL-Shop 0
In Diskussion JTL POS Kundennummer wird nicht an JTL Wawi übertragen JTL-POS - Fehler und Bugs 2
Neu SEO URL der Kategorien wird nicht an Shopware 6 übertragen Shopware-Connector 0
Kann ich eine email an die Wawi senden durch die dann ein neuer Auftrag generiert wird? (Daten müssen händisch vervollständigt werden...) JTL-Wawi 1.8 2
Issue angelegt [WAWI-75449] Artikel duplizieren - ASIN wird nicht mit dupliziert. JTL-Wawi - Fehler und Bugs 1
Neu Ware auf Retoureplatz wird als "verfügbar" betrachtet JTL-Wawi - Fehler und Bugs 2
Gelöst Packtisch+ 1.8.112 : Rechnung wird bei Teillieferung erzeugt, obwohl als Ausführungsbedingung "Nur bei der letzten Teillieferung" ausgewählt ist. JTL-WMS / JTL-Packtisch+ - Fehler und Bugs 2
Neu Funktionsattribut unverkäuflich wird nicht an den Shop übertragen Allgemeine Fragen zu JTL-Shop 1
Neu Title Tag wird auf Loginseite nicht übernommen Betrieb / Pflege von JTL-Shop 1
Neu Erstinstallation JTL WaWi 1.8.12 - heruntergeladen wird SQL Express 2017 _statt_ der empfohlenen 2022 Version Installation von JTL-Wawi 8
Neu Kurzbeschreibung von einem "Stücklisten-Artikel" wird in der Rechnungskorrektur Vorlage nicht angezeigt. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu Shop wird nicht verbunden Onlineshop-Anbindung 2
Neu Guthaben reduziert nicht den Auftragswert sondern wird als Zahlung angerechnet User helfen Usern - Fragen zu JTL-Wawi 2
Neu Sortiernummer Merkmalwert wird nicht richtig übernommen (Ameise) JTL-Wawi - Fehler und Bugs 3

Ähnliche Themen