0

プッシュ状態のアプリを作成しました。すべてが正常に機能しています。ただし、場合によっては、jquery 関数が複数回起動しています。これは、プッシュ状態を呼び出すときに、呼び出すページごとに特定の js ファイルをバインドするためです。これは、自分のページを閲覧しているときに、同じ js 関数が何度も html にバインドされることを意味します。

ヒント: jquery 関数で documen.on を使用しています。これは、関数が Ajax を介して動的に印刷された HTML にバインドされる必要があるためです。

印刷前のプッシュ状態でオフを使用しようとしましたが、成功しませんでした!

これが私のコードです:

var requests = [];

        function replacePage(url) {

            var loading = '<div class="push-load"></div>'
            $('.content').fadeOut(200);
            $('.container').append(loading);

            $.each( requests, function( i, v ){
                v.abort();
            });

            requests.push( $.ajax({                     
                    type: "GET",
                    url: url,
                    dataType: "html",
                    success: function(data){            

                        var dom = $(data);
                        //var title = dom.filter('title').text();
                        var html = dom.find('.content').html();
                        //alert(html);
                        //alert("OK");
                        //$('title').text(title);
                        $('a').off();
                        $('.push-load').remove();                       
                        $('.content').html(html).fadeIn(200);
                        //console.log(data);

                        $('.page-loader').hide();
                        $('.load-a').fadeIn(300);                       
                    }
                })
            );
        }

        $(window).bind('popstate', function(){
            replacePage(location.pathname);
        }); 

前もって感謝します!

4

2 に答える 2