1

このコードは完全に機能しているようです:

window.onhashchange = function(){
    if (!window.location.href.match('#pop')) {
        //alert('go back last');
        $('#main').removeClass('hidden');
        $('.pop').removeClass('pop-ready');
        $('.pop').addClass('pop-hidden');
    }

    /* navigate back after back button */
    if (!window.location.href.match('#secondpage')) {
        $('#pageCont').removeClass('posTwo');
        $('#pageOne').removeClass('hidden');
        $('#pageTwoInner').addClass('hidden'); 

    }
    if (window.location.href.match('#secondpage')) {
        $('#pageCont').addClass('posTwo');

        $('#pageTwoInner').removeClass('hidden'); 
    }
}; 

ただし、遅延とキューを1つの関数に追加すると、コードが気まぐれになり、そのクラスが追加されないことがあります。

window.onhashchange = function(){
    if (!window.location.href.match('#pop')) {
        //alert('go back last');
        $('#main').removeClass('hidden');
        $('.pop').removeClass('pop-ready');
        $('.pop').addClass('pop-hidden');
    }

    /* navigate back after back button */
    if (!window.location.href.match('#secondpage')) {
        $('#pageCont').removeClass('posTwo');
        $('#pageOne').removeClass('hidden');
                    /* CHANGE HERE */
        $('#pageTwoInner').delay(200).queue(function(){
            $(this).addClass('hidden'); 
        });
    }
    if (window.location.href.match('#secondpage')) {
        $('#pageCont').addClass('posTwo');

        $('#pageTwoInner').removeClass('hidden'); 
    }
}; 
4

1 に答える 1

0

queue()を使用する場合、次のアイテムをデキューする必要があります。そうしないと、コールバック チェーンが壊れます。

これを実現するには 2 つの方法があります。コールバックからdequeue()を呼び出します。

$("#pageTwoInner").delay(200).queue(function() {
    $(this).addClass("hidden").dequeue(); 
});

またはnext、コールバックに渡された引数を呼び出します。

$("#pageTwoInner").delay(200).queue(function(next) {
    $(this).addClass("hidden"); 
    next();
});
于 2012-05-23T10:19:46.850 に答える