我一直在玩一些最初用1.2.6编写的jQuery脚本。 我想使用他的尝试这个脚本和其他一些jquery的东西,同时移动到最新的1.4.1,但我得到一个错误。
代码是:
GlobalHeader={
globalNav:function(){
var recipeLbl="recipes-and-cooking";
var navTimer=null;
var bodyId=document.body.id;
bodyId=(bodyId=='shows'||bodyId=='chefs')?bodyId:recipeLbl;
var initializeMenu="#sub-nav-"+bodyId+" li";
hideAll();
initMenu(initializeMenu);
function initMenu(initializeMenu){
var menu=initializeMenu;
$(menu).find('h3:first span').click(function(){hideAll();});
$(menu+"[@class ^= 'nav-']").each(function(i){$(this).hover(
function(e){
hideAll();
var $this=$(this);
var offsetVal="auto";
var divs=$(this).nextAll();
var width=0;
jQuery.each(divs,function(){width=width+parseInt($(this).width());});
if($this.hasClass("nav-e")){
offsetVal=(($(this).parents().filter('ul').width()-$(this).find('div.drop').width())-width);
}
else
{
if((jQuery.browser.msie)&&(jQuery.browser.version==6)){
offsetVal=($(this).parents().filter('ul').width()-width)-parseInt($(this).width())-7;
}
else
{
offsetVal="auto";
}
}
$('body').bind("click",function(e){bodyClick(e);});
navTimer=setTimeout(function(){
$this.find('div.drop').css({
left:offsetVal,top:"28px",background:"none",display:"block"
});
navTimer=null;},375);
},
function(e){
clearTimeout(navTimer);
navTimer=null;
var closeDiv=$(this);
if(jQuery.browser.msie){$(this).find('div.drop').css({background:"b2b2b2"});}
navTimer=setTimeout(function(){
closeDiv.find('div.drop').css({top:"28px",display:"none",display:"none"});
navTimer=null;}
,100);}
);}
)
;}
function bodyClick(e){var $clicked=$(e.target);if($clicked.parents().is('.drop')){return false;}else{hideAll();$('body').unbind();}}
function hideAll(){clearTimeout(navTimer);navTimer=null;$("#sub-nav li[@class ^= 'nav-'] div.drop").each(function(){$(this).css({display:"none"});});}
}};
但是,这行错误$(menu +“[@ class ^ ='nav - ']”)。each(function(i){$(this).hover( 说undefined是null。 jQuery 1.4.1也有错误抱怨“抛出但未被捕获”的错误。
有人能发现修复吗?
非常感谢提前
答案 0 :(得分:1)
@
为removed from attribute selectors in jQuery 1.3+,现在应该是:
$(menu+"[class^='nav-']")
你可以在这里查看jQuery 1.4+的当前属性选择器的完整列表(或者当前版本是什么......这个答案会变老:):http://api.jquery.com/category/selectors/attribute-selectors/
您底部的hideAll()
功能需要相同的处理:
$("#sub-nav li[class^='nav-'] div.drop")
最后一点,最新的答案是jQuery 1.4。 2 ,不妨得到所有最新的bug fixes and methods it includes,你总能在这里找到最新版本:{{ 3}}