だから私はこれを探していましたが、アンカー機能をすべて一緒に殺さずに解決策を見つけられませんでした.
一部のコンテンツ 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;
}
});