Odpalenie dodatkowej funkcji za kazdym razem

0

Czesc,
przerabiam pewien kod w sklepie internetowym (Prestashop).

Moj problem polega na tym, ze przy zaladowaniu strony odpalam swoj maly skrypt javascript, ktory tworzy slider ze zdjeciami produktu. Na stronie produktu jest pelno bajerow jak zmiana kolor produktu, wybor rozmiaru itp. Mam problem ze zlokalizowaniem wszystkich tych funkcji. Problem w tym, ze przy zaladowaniu strony wszystko jest ok ale po zmianie np rozmiaru produktu slider sie rozjezdza.

Musialbym odpalic jeszcze raz funkcje odpowiedzialna za tworzenie slidera. Czy jest mozliwosc aby w jquery wykryc kazda wykonana funkcje, ktora dynamicznie cos zmienia na stronie i po kazdej takiej odpalic dodatkowo moja, ktora stworzy slider na nowo?

0

Czy jest mozliwosc aby w jquery wykryc kazda wykonana funkcje (...)

Nie rozróżniasz JavaScriptu od jQuery, prawda?

Tak czy siak: nie, nie ma takiej możliwości i z całą pewnością nie byłoby to dobre podejście.
Powinieneś odnaleźć w kodzie wszystkie te miejsca, gdzie te funkcje się odpalają, i dorzucić tam ten Twój handler.

0

Czy mozecie mi wiec podpowiedziec gdzie w kodzie ponizej umiescic odpalenie mojej funkcji? Chcialbym ja uruchomic za kazdym razem jak jest zmieniane product-variants:

function(e, t, n) {
    "use strict";

    function r(e) {
        return e && e.__esModule ? e : {
            default: e
        }
    }
    var i = n(2),
        o = r(i),
        a = n(4),
        s = r(a);
    (0, o.default)(document).ready(function() {
        (0, o.default)("body").on("change", ".product-variants [data-product-attribute]", function() {
            (0, o.default)("input[name$='refresh']").click()
        }), (0, o.default)("body").on("click", ".product-refresh", function(e, t) {
            var n = (0, o.default)(this);
            e.preventDefault();
            var r = "updatedProductCombination";
            "undefined" != typeof t && t.eventType && (r = t.eventType);
            var i = (0, o.default)(e.target.form).serialize() + "&ajax=1&action=productrefresh",
                a = (0, o.default)(e.target.form).attr("action");
            o.default.post(a, i, null, "json").then(function(e) {
                s.default.emit("updateProduct", {
                    reason: {
                        productUrl: e.productUrl
                    },
                    refreshUrl: n.data("url-update"),
                    eventType: r,
                    resp: e
                })
            })
        }), s.default.on("updateProduct", function(e) {
            "undefined" == typeof e.refreshUrl && (e.refreshUrl = !0);
            var t = e.eventType,
                n = function(e) {
                    function t(e) {
                        var t = e.$addToCartSnippet.find(e.targetSelector);
                        (0, o.default)(e.$targetParent.find(e.targetSelector)).length > 0 && (t.length > 0 ? (0, o.default)(e.$targetParent.find(e.targetSelector)).replaceWith(t[0].outerHTML) : (0, o.default)(e.$targetParent.find(e.targetSelector)).html(""))
                    }
                    var n = (0, o.default)(e),
                        r = (0, o.default)(".product-add-to-cart"),
                        i = ".add";
                    t({
                        $addToCartSnippet: n,
                        $targetParent: r,
                        targetSelector: i
                    });
                    var a = "#product-availability";
                    t({
                        $addToCartSnippet: n,
                        $targetParent: r,
                        targetSelector: a
                    });
                    var s = ".product-minimal-quantity";
                    t({
                        $addToCartSnippet: n,
                        $targetParent: r,
                        targetSelector: s
                    })
                };
            o.default.post(e.reason.productUrl, {
                ajax: "1",
                action: "refresh"
            }, null, "json").then(function(r) {
                (0, o.default)(".product-prices").replaceWith(r.product_prices), (0, o.default)(".product-customization").replaceWith(r.product_customization), (0, o.default)(".product-variants").replaceWith(r.product_variants), (0, o.default)(".product-discounts").replaceWith(r.product_discounts), (0, o.default)(".images-container").replaceWith(r.product_cover_thumbnails), (0, o.default)(".product-additional-info").replaceWith(r.product_additional_info), (0, o.default)("#product-details").replaceWith(r.product_details);
                var i = void 0;
                (0, o.default)(r.product_add_to_cart).each(function(e, t) {
                    (0, o.default)(t).hasClass("product-add-to-cart") && (i = (0, o.default)(t))
                }), n(i);
                var a = parseInt(r.product_minimal_quantity, 10),
                    u = "#quantity_wanted",
                    l = (0, o.default)(u),
                    c = l.val();
                !isNaN(a) && c < a && "updatedProductQuantity" !== t && (l.attr("min", a), l.val(a)), e.refreshUrl && window.history.pushState({
                    id_product_attribute: r.id_product_attribute
                }, void 0, r.product_url), s.default.emit("updatedProduct", r)
            })
        })
    })
0

Ok, poradziłem sobie. Bardzo dziękuję wszystkim za pomoc i konstruktywne uwagi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1