我正在尝试创建一个菜单,该菜单在单击项目时会将链接更改为文本(从所选项目中删除超链接功能)并将颜色从“常规链接”平滑地更改为“选定”颜色。我的代码在任何地方都可以使用,除了较新版本的 Firefox。FF 导致过渡闪烁。
我的菜单是在页面加载时动态创建的。一个名为“createInitial()”的函数负责此操作:
function createInitial(){
// BLA-BLA-BLA SOME CODE
//construct menu
for(i=0; i<pages.length; i++){ //for every item of pages[] array
$dashLink = $("<a>");
$dashLink.html(pages[i].title);
$dashLink.attr("href", "javascript:void(0)");
$dashLink.attr("id", "dashLink" + i); //create a link for a particular page (with matching ID field)
$dashLink.click(menuHandler);
$dashText = $("<span>");
$dashText.html(pages[i].title);
$dashText.attr("id", "dashText" + i); //create a text (to be used instead of a link, while on a page) for a particular page
$dashText.css("display", "none");
$("#menu").append("[ ", $dashLink, $dashText, " ] "); //add links and texts to same bracket space in the menu
}
//
//creates default text instead of a link
$("#dashLink" + currentPage).css("display", "none");
$("#dashText" + currentPage).css("display", "inline");
//
// BLA-BLA-BLA SOME CODE
}
此功能仅在页面加载时执行一次。之后,函数“changeHeading()”负责改变菜单中的所有项目:
function changeHeader(page){ //change a page
//stop all previous animation
$("#heading").stop();
$("#content").stop()
$("#menu a").stop(true);
$("#menu span").stop(true);
//
//change current page to new, store current page id
tempPage = currentPage;
currentPage = page;
//
//record current changing menu items color state
currentPageLinkTextColor = $("#dashText" + tempPage).css("color"); // starting point for current page menu text item
nextPageLinkColor = $("#dashLink" + page).css("color"); //starting point for clicked page menu link item
//
//show current page menu item as link and start chaging to link color
$("#dashLink" + tempPage).css("color", currentPageLinkTextColor);
$("#dashText" + tempPage).hide();
$("#dashLink" + tempPage).show();
$("#dashLink" + tempPage).animate({color: linkColor}, transitionTime*2);
//
//show next page menu item as text and start changing to text color
$("#dashText" + page).css("color", nextPageLinkColor);
$("#dashLink" + page).hide();
$("#dashText" + page).show();
$("#dashText" + page).animate({color: linkTextColor}, transitionTime*2);
//
$("#menu a").animate({color: linkColor}, transitionTime*2); //change all menu links to link color
//changes title
$("#heading").fadeOut(transitionTime, function() { //fade out / fade in title
$("#heading").html(pages[page].title)
$("#heading").fadeIn(transitionTime)
});
//
}
这段代码在任何地方都能完美运行(即使在 IE 中),除了较新版本的 Firefox(不确定,但可能只在 Windows 上)。我已经在 Linux Mint 上测试了 Firefox 12,它就像一个魅力。但是,在 Windows 上使用 Firefox 15 进行测试时 - 过渡闪烁严重!我发现了几个线程,人们遇到了类似的问题,但其中大多数对于 FF15 来说太旧了。这是我尝试过的几个链接: - Firefox 中的 jQuery SlideDown 闪烁 - jquery animate (height) 导致 Firefox 中的背景图像闪烁 - http://voidcast.wordpress.com/2011/03/29/jquery-flicker-问题-on-firefox-with-fadeout-and-fadein/
没有任何帮助......不幸的是。有谁知道可能是什么问题?谢谢!