Ajaxproblem bei Variantenauswahl

Hi,

ich hab folgendes problem mit meinem modul:

ich hab ein clickevent (mit $(’#meineid’).bind(‘click’,…)) auf das ändern einer auswahlliste. dies funktioniert ganz gut. allerdings wird dieser event nicht mehr ausgelöst, sobal varianten dazukommen.

wenn eine variante ausgewählt wird, passiert nichts mehr, wenn ich eine auswahlliste ändere.

ich hab festgestellt, dass die variantenauswahl ein ajax request abschickt und als ergebnis einen html schnipsel, welches einen teil der productmain.tpl überschreibt.

dieses überschreiben sorgt demzufolge, dass mein event nicht mehr ausgelöst wird.

ich binde meine js-datei mit include in die details.tpl ein und ein event wie “on” geht nicht (weil oxid nur jquery version 1.4.2 hat) und mit “live” funktioniert das nicht.

hat jemand einen tipp, wie ich meinen event auf die auswahllisten behalte, auch wenn vorher die variante geändert wurde?

danke im voraus.

gruß

sentinel

hast du zufällig eine ältere Shopversion und deaktivierte Kommentar-Funktion?

ich hab die version CE 4.6.1_45706. ich verstehe nicht, was die kommentar-funktion mit meinem problem zu tun hat:confused:

[QUOTE=vanilla thunder;102191]hast du zufällig eine ältere Shopversion und deaktivierte Kommentar-Funktion?[/QUOTE]

[QUOTE=sentinel777;102193]ich hab die version CE 4.6.1_45706. ich verstehe nicht, was die kommentar-funktion mit meinem problem zu tun hat:confused:[/QUOTE]

Einiges:

http://www.creative-works.org/ueber-uns/blog/blog-post/2012/08/23/varianten-auswahl-funktioniert-nicht-mit-oxid-45-46.html

Die Lösung ist denkbar einfach. Diese beiden Zeilen in der Datei tpl/page/details/ajax/productfullinfo.tpl bzw. fullinfoproduct.tpl auskommentieren oder löschen:

[{oxscript add=“$( ‘#reviewRating’ ).oxRating({openReviewForm: false, hideReviewButton: false});”}]

[{oxscript add=“$( ‘#writeNewReview’ ).oxReview();”}]

das konnte mein problem nicht lösen. mal schauen, was passiert, wenn ich jquery durch die neueste version überschreibe. evtl. gehts dann mit dem “on”

edit: hat leider nicht geklappt. bin ratlos…

Mit on und live sollte es auch funktionieren, du kannst auch einfach in page/details/ajax die Events in den Schnipseln neu registrieren.

ich würde nur ungern die original oxid dateien anfassen, wegen updates. kann man nicht von einem widget vererben, um es um ein paar funktionen zu erweitern? ich denke, es wäre sehr elegant, ein eigenes widget zu schreiben, welches ein vorhandenes (oxarticlevariant.js) erweitert.

mein code für die auswahllisten sieht so aus:

$.each($(‘#productSelections ul li a’), function() {
$(this).bind(‘click’, function() {
alert($(this).text());
});
});

ein live überlebt nicht, wenn ich eine variante ändere. ich arbeite mich gerade etwas in die widgets ein…

Wenn du den js-code z.B. im Block details_productmain_selectlists in inc.productmain.tpl einfügst, dann wird er mit dem ajax neu geladen und ausgeführt und funktioniert daher auch bei den Varianten.

[QUOTE=leofonic;102220]Wenn du den js-code z.B. im Block details_productmain_selectlists in inc.productmain.tpl einfügst, dann wird er mit dem ajax neu geladen und ausgeführt und funktioniert daher auch bei den Varianten.[/QUOTE]

das hätte ich erwartet, allerdings ist das leider nicht der fall :frowning:

in meiner inc/porductmain.tpl steht ab zeile 200:

[{* selection lists *}]
[{block name=“details_productmain_selectlists”}]
[{oxscript include=“js/libs/test.js”}]
[{if $oViewConf->showSelectLists()}]

vor variantenauswahl gehts, danach nicht mehr.

ich hab allerdings ein eigenes widget erstellt, welches direkt ans productSelections div angehängt ist, mit

[{oxscript add="$( ‘#productSelections’ ).oxDynamicPrice();"}]

in ajax/fullproductinfo.tpl und ajax/productmain.tpl

wenn ich nun eine variante auswähle, komme ich in die _create funktion des widgets, wo ich nur noch die ausgewählten values der auswahllisten auslesen muss.

das ist allerdings noch nicht die finale lösung, da ich noch nicht an die richtigen werte drankomme.

Wenn du den Code direkt einbaust und nicht in eine Datei auslagerst geht’s.


[{capture name='selectionsclick' assign='selectionsclick'}]
$.each($('#productSelections ul li a'), function() {
        $(this).bind('click', function() {
            alert($(this).text());
        });
    });
    
[{/capture}]
[{oxscript add=$selectionsclick}]

vielen dank für die großartige unterstützung.

ich hab mein vorhaben nun über ein eigenes javascript widget gelöst.