Why does my Jquery code not work on elements loaded with .load (), how do I load them?

3

What is the correct way to load my jQuery scripts along with .load ().

I did it this way but I wanted another solution that would work with all updates that occur with the form, such as remove from products, change from cart quantity and etc:

// Adição ao Carrinho com retorno de plugins Jquery

$('#Carrinho').submit(function () {
    var $this = jQuery(this),
        dados = $this.serialize();
    jQuery.ajax({
        type: "POST",
        datatype: 'json',
        url: $this.attr('action'),
        data: dados,
        complete: function (update) {
            if ($(".list-inline button").hasClass("active")) {
                $("#cart-header").load("https://127.0.0.1/ #cart-header-container", function () {

                    // Estou atualizando meu carrinho, mas os demais scripts de remoção de produtos 
                    //ao carrinho, e alteração de quantidades precisam vir junto com está função, se o 
                    //usuários adicionar 10 produtos ao carrinho teria de repetir 10 vezes esse, e o 
                    //codigo ficaria muito longo, e não acredito ser a técnica correta.

                    // Abre - Fecha Sacola  
                    $(document).ready(function () {
                        $("#cart-right-nav").click(function () {
                            $("#cart-header").slideToggle("slow");
                        });
                    });
                    // Fim Abre - Fecha Sacola  
                });
                $("#cart-head-loader").fadeOut(1000);
            } else {
                $("#buy-btn").css("display", "block")
                $(".added-to-cart").css("display", "none");
            }
        },
        error: function (erro) {
            alert("Não adicionou a sacola.");
        }
    });
    return false;
});
    
asked by anonymous 12.12.2014 / 21:59

1 answer

1

Thanks again to Bruno Augusto, who practically solved my problem!

              $.getScript('script-carrinho.js');

I was able to solve this by just calling the 'script-cart.js' file, Through $ .getScript (), within the 'complete' callback, so the script needed to run this function gets loaded every time it is executed.

$('#Carrinho').submit(function () {
    var $this = jQuery(this),
        dados = $this.serialize();
    jQuery.ajax({
        type: "POST",
        datatype: 'json',
        url: $this.attr('action'),
        data: dados,
        complete: function (update) {
            if ($(".list-inline button").hasClass("active")) {
                $("#cart-header").load("https://127.0.0.1/ #cart-header-container", function () {


                  $.getScript('script-carrinho.js');

                    // Consegui resolver apenas fazendo uma chamada do arquivo 'script-carrinho.js', 
                   // Através do $.getScript(), assim o script necessário para o funcionamento desta,
                  // função fica carregado.


                    // Abre - Fecha Sacola   --- Este script também entrou no arvuio 'script-carrinho.js'
                    $(document).ready(function () {
                        $("#cart-right-nav").click(function () {
                            $("#cart-header").slideToggle("slow");
                        });
                    });
                  // Fim Abre - Fecha Sacola --- Este script também entrou no arvuio 'script-carrinho.js'


                });
                $("#cart-head-loader").fadeOut(1000);
            } else {
                $("#buy-btn").css("display", "block")
                $(".added-to-cart").css("display", "none");
            }
        },
        error: function (erro) {
            alert("Não adicionou a sacola.");
        }
    });
    return false;
});
    
13.12.2014 / 14:31