0

だから私はこれを探していましたが、アンカー機能をすべて一緒に殺さずに解決策を見つけられませんでした.

一部のコンテンツ DIV のフェードインとフェードアウトをアニメーション化するために、アンカー タグを使用しています。バグは、前のアニメーションがまだ発生しているときにユーザーが別のアンカー タグをクリックすると発生し、2 つの DIV が重なり合ってしまいます。私が見つけた他の解決策は、リンク機能を強制終了し、その後それらを役に立たなくします。そのDIVのアニメーションが進行している間、このアンカーは役に立たないという何かが必要です。しかし、アニメーションが完了すると、このアンカーは機能します。

私はもう試した

if ($("#" + visibleCtn).is(':animated')) {
     $("#modRightCol a").click('onclick', null);
    }

if ($("#" + visibleCtn).is(':animated')) {
     $("#modRightCol a").click(function(){
     return false
         });
     }

これにより、ボタンが完全に削除されます。

if ($("#" + visibleCtn).is(':animated')) {
     $("#modRightCol").undelegate("a", "click");
     return false;
    }

表示と非表示のコードは次のとおりです。

$("#modRightCol").delegate("a", "click", function(e) {
            e.preventDefault();
            var locInfo = $(this).attr("rel") + "Ctn";
            var locBtn = $(this).attr("rel") + "Btn";
            newCtn = $('#' + locInfo);

            //Change Map Location Button State
            cityLink.css('backgroundPosition','bottom');
            $(this).css('backgroundPosition','top');

            //Hide currently visible information
            allInfoCtn.each(function() {
                if($(this).hasClass('modActive')) {
                    visibleCtn = $(this).attr('id');
                } 
            }); 


            $("#" + visibleCtn).animate({
                        opacity: 0
                    }, 500, function(){
                         $("#" + visibleCtn).hide().removeClass("modActive").removeAttr("style");

                         //Show information related to location clicked
                        newCtn.show().animate({
                                opacity: 1
                            }, 500, function(){
                                newCtn.addClass('modActive');
                            });
                    }); //end animation function

           //Block clicks during animation              
           if ($("#" + visibleCtn).is(':animated')) {
                $("#modRightCol").undelegate("a", "click");
                return false;
            }

        });
4

0 に答える 0