0

完全なコールバックで他のパラメーターを使用して関数を再実行しようとしていますが、思い通りに動作しません。最初の呼び出しでは問題なく動作しますが、再度呼び出すと、テスト アラートが 2 回しか発生せず、関数が再度実行されることはありません。私の意図は、ユーザーが要素をクリックするたびに要素のIDである別のパラメータで関数を実行することです。誰かが私を助けてくれたらありがたいのですが、どうすればいいですか? ありがとう。=)

 jQuery(function($){  

    var load_pages = function($page){  
            $.ajax({  
                type       : "POST",  
                data       : {page_name : $page},  
                dataType   : "html",  
                url        : "http://localhost/includes/loadpages.php",
                beforeSend : function(){
                    $("#content").addClass("hide");

                    if($page.substr(0,9) == "categoria"){
                        $("#content").removeClass("hide");
                        $("#the-portfolio").remove();
                    }

                },
                success    : function(data){
                    $data = $(data);  
                    if($data.length){
                        if($page == 'lista_portfolio'){
                            $(".submenu").append($data);
                            $(".submenu").append('<div class="end"></div>');

                        }
                        else{
                            if(!$("#content") ==  false){
                                $("#wrapper").append('<div id="content"></div>');
                            }
                            $("#content").append($data);  
                            $(".foot").animate({bottom: 0},700,'easeOutExpo');
                            $data.fadeIn(500);

                        }   
                    } 
                },  

                error     : function(jqXHR, textStatus, errorThrown) {  
                    alert(jqXHR + " :: " + textStatus + " :: " + errorThrown);  
                }, 

                complete : function() {
                    $("#portfolio_categories_list li a").click(function(){
    alert("test");
                        $categoria = $(this).attr("title").split("Ver todos os posts arquivados em ");
                        load_pages("categoria"+$categoria[1]);
                        return false;
                        });
                }
        });
        }// end load_pages
});
4

2 に答える 2

0

load_pages()完全に呼び出すと、再帰関数が発生してメモリが不足する可能性があるため、呼び出さないでください。

代わりに、関数を から呼び出してから、次のよう$.ajaxに event をバインドしclickます。

 $(document).on("click","#portfolio_categories_list li > a",function(e){

       e.preventDefault();

       alert("test");
       $categoria = $(this).attr("title").split("Ver todos os posts arquivados em ");
       load_pages("categoria"+$categoria[1]);

 });
于 2013-09-05T17:56:11.193 に答える
0

完全なコールバックでイベント ハンドラを追加する理由がわかりませんでした。要素を dom に追加した後でイベントをバインドすると、成功したコールバックでうまく機能するはずです。また、問題の確認に役立つコンソール/XHR リクエストの出力を提供してください。アラートの代わりにコンソール ログを追加すると、問題の追跡に役立ちます。

于 2014-04-24T15:06:30.577 に答える