0

わかりました私はこれを持っています:

/******AJAX SUBPAGES ACADEMIES****/
coachesLinks.click(function (e) {
    e.preventDefault();
});
coachesLinks.click(function (e) {
            var $el = jQuery(this);
            var URL = $el.attr('href');
            var URL = URL + " .main";
    jQuery(contentTwo).show('slow').load(URL, function () {
        scrollToAnchor('content_two');
        ajaxloader('.academy_coaches_readmore');
        accordion();
        $('.main').css('overflow', 'visible');
        $(contentTwo).css('overflow', 'visible');
        jQuery('#content_two .back').on('click', function () {
            jQuery(this).hide('slow');
            if (contentTwo.is(':hidden')) {
                jQuery('#content_two .back').hide();
            } else {
                contentTwo.hide('slow');
                jQuery(contentmain).show('slow');
                jQuery(contentmain).css('overflow', 'visible');
                scrollToAnchor('access');
            }
        });

    });
    $(contentmain).hide('slow');
});

この:

function ajaxloader(myselector) {
        internalLinks = jQuery(myselector);
        internalLinks.click(function (e) {
            e.preventDefault();
        });
        internalLinks.click(function (e) {
            var $el = jQuery(this);
            var URL = $el.attr('href');
            var URL = URL + " .main";
            jQuery(contentTwo).show('slow').load(URL, function () {
                scrollToAnchor('content_two');
                $('.main').css('overflow', 'visible');
                $(contentTwo).css('overflow', 'visible');
                jQuery('#content_two .back').on('click', function () {
                    jQuery(this).hide('slow');

                    if (contentTwo.is(':hidden')) {
                        jQuery(contenttwoback).hide();
                    } else {
                        contentTwo.hide('slow');
                        jQuery(contentmain).show('slow');
                        jQuery(contentmain).css('overflow', 'visible').delay(100);
                        scrollToAnchor('access');

                    }
                });

            });
            $(contenttwoback).show('slow');
            $(contentmain).hide('slow');
        });
}

これらの変数で:

/******variables******************/
            var contentmain = jQuery('#content > .main');
            var contentTwo = jQuery('#content_two');
            var siteURL = 'http://' + top.location.host.toString();
            var coachesLinks = jQuery(' .academy_readmore');

私は次のように2番目の関数を呼び出しています:

/******AJAX SUBPAGES SUBMENU FUNCTION****/
ajaxloader('#submenunav ul li a');
/******AJAX SUBPAGES COACHES****/
ajaxloader('#accordion .coaches_readmore');
/******AJAX LESSONS***/
ajaxloader('#accordion .lessons_readmore');

私の質問は、ネストされた ajax をパラメーターとして使用して 2 番目の関数を呼び出す方法です。このようなもの(機能しません):

 ajaxloader('#accordion .lessons_readmore' ajaxloader('.academy_coaches_readmore'));

最初の ajax ローダー内に 2 番目の ajax ロードをネストしますか?? クリスのコードの完全なコピー: http://jsfiddle.net/JGVEb/

4

1 に答える 1

1

最初の要求が完了した後にのみ 2 番目の要求が発生するように、これらの AJAX 要求を連続して実行したいということですか?

関数のパラメーターとしてコールバック関数を指定できます。このようなもの:

function ajaxloader(myselector, callback) {
    // some code
    jQuery(contentTwo).show('slow').load(URL, function () {
        // more code

        if (callback) { callback(); }
    });
};

そうすれば、AJAX 要求が終了した後にコールバックが呼び出されます。次に、コールバックを持つ他の jQuery 関数と同じように呼び出します。

ajaxloader('#accordion .lessons_readmore', function () {
    ajaxloader('.academy_coaches_readmore'));
});
于 2013-09-29T12:12:47.730 に答える