编辑:这是jQuery 1.3.1中确认的错误。它在jQuery 1.3.2中修复。
我的YUI菜单控件与this sample完全相同,顶部有子菜单。
我尝试使用Yahoo的代码来初始化菜单:
YAHOO.util.Event.onContentReady("mnuTopNav", function() {
var oMenuBar = new YAHOO.widget.MenuBar("mnuTopNav", {
autosubmenudisplay: true,
hidedelay: 750,
lazyload: true
});
oMenuBar.render();
});
我发现有些图片需要花时间加载的问题。
我注意到标题会立即显示(通讯/购物/娱乐),但是在所有图像都加载之前,指示有子项的小箭头才会出现。
我觉得这很奇怪。我甚至尝试将代码切换到JQuery,看看是否会在图像加载之前进行初始化(这就是我认为应该做的$(function()
。)
$(function(){
var oMenuBar = new YAHOO.widget.MenuBar("mnuTopNav", {
autosubmenudisplay: true,
hidedelay: 750,
lazyload: true
});
oMenuBar.render();
});
令我惊讶的是,我仍有同样的问题。在整个页面加载之前,菜单不会初始化。
这绝对是正在等待的图像。
注意:此问题仅适用于Internet Explorer。 Firefox似乎在加载图像之前提高了onContentReady事件。
我可以解决这个问题吗?
<小时/> 编辑:这是jQuery 1.3.1中确认的错误。它在jQuery 1.3.2中修复。
答案 0 :(得分:1)
您是否尝试过使用YUI的onAvailable()而不是onContentReady()?来自YUI's docs:
onContentReady方法共享一个 与onAvailable相同的语法。该 两者之间的物质差异 方法是onContentReady等待 直到目标元素和它 DOM中的nextSibling响应 的getElementById。这保证了 目标元素的内容将 完全装满了(除了任何 您可能稍后添加的动态内容 通过脚本)。如果onContentReady永远不会 检测到nextSibling,它会触发 window.load事件。
我的猜测是浏览器需要在nextSibling属性工作之前将图像加载到DOM上,因此onContentReady()正在等待它。
答案 1 :(得分:0)
对于jQuery你应该这样做:
$(document).ready(function(){
var oMenuBar = new YAHOO.widget.MenuBar("mnuTopNav", {
autosubmenudisplay: true,
hidedelay: 750,
lazyload: true
});
oMenuBar.render();
});
答案 2 :(得分:0)
Yahoo的onContentReady(...)似乎因某种原因等待图片加载,所以我已经停止使用它了。
此外,$(function(){})中似乎存在JQuery错误;作品
请参阅this post,试图了解有关此问题的详细信息。