2010-06-12 75 views
0

我一直在玩一些最初使用1.2.6編寫的jQuery腳本 我想用他的腳本嘗試一些其他jQuery的東西, 。移動高達最新的1.4.1,但我得到一個錯誤從Jquery 1.2.6移動到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"});});} 
}}; 

然而,在這條線$錯誤(菜單+「[@類^ = 'nav-'] 「).each(function(i){$(this).hover( )表示undefined爲null。jQuery 1.4.1也有錯誤,抱怨」拋出但未捕獲「錯誤

任何人都可以發現修復嗎?

$(menu+"[class^='nav-']") 

您可以查看當前屬性選擇器的完整列表jQuery的1.4+(或任何電流:

提前

回答

1

@removed from attribute selectors in jQuery 1.3+,現在應該只是非常感謝版本是...這個答案會變老:)這裏:http://api.jquery.com/category/selectors/attribute-selectors/

你的hideAll()功能在底部將需要相同的處理:

$("#sub-nav li[class^='nav-'] div.drop") 

最後一個註釋,最新的這個答案是jQuery 1.4。 ,不妨得到所有最新的bug fixes and methods it includes,你隨時可以在這裏找到最新版本:http://docs.jquery.com/Downloading_jQuery#Download_jQuery

+0

哇!那很快!!感謝尼克...這解決了我的問題:) 我不能相信我錯過了grrr ....也,我的錯誤 - 我已經有1.4.2 :) 再次感謝 – jtanner 2010-06-12 21:19:04

+0

@jtanner - 歡迎,歡迎來到SO :)一定要接受答案,欣賞音樂,祝你有美好的一天! – 2010-06-12 21:21:55