2012-02-24 69 views
0

我對jQuery非常新,我想確保我正確寫入它。我想開始瞭解如何儘可能減少寫入。我認爲以下應該在.each()函數中,但我不確定。這就是爲什麼我把它編碼成if語句的原因。試圖瞭解如何簡化jquery

HTML

  <div id="header" class="container"> 
      <div class="row"> 
      <div class="sixcol"> <a href="#"><img src="http://dermdev3/sites/Dermatology/images/logo/derm_header_penn_logo.png" alt="Penn Medicine - Dermatology Header Logo" name="logo" width="363" height="103" id="logo"></a></div> 
      <div class="sixcol last"> 
       <ul id="navigation"> 
       <li><a class="navy" href="#" title="Home">Home</a></li> 
       <li><a class="red" href="#" title="Link">Link</a></li> 
       <li><a class="yellow" href="#" title="Link">Link</a></li> 
       <li><a class="light-blue" href="#" title="Link">Link</a></li> 
       </ul> 
      </div> 
      </div> 
     </div> 

Jquery的

$(function() { 
//Webpages 
var home = "Home.hmtl"; 
var wiki = "Wiki.html"; 

//Main Navigation 
var header = $("div#header"); 
var colors = "navy red yellow light-blue"; 
var nav = $("#navigation"); 
var navList = $("#navigation li"); 

if (pathname == wiki) { 
    header.addClass("red"); 
    $("#navigation a.red").attr("id", "current"); 

    navList.children().mouseenter(function() { 
     $("#navigation a.red").removeAttr("id", "current"); 
    }); 

    nav.mouseleave(function() { 
     header.removeClass(colors).addClass("red"); 
     $("#navigation a.red").attr("id", "current"); 
    }); 
} 
if (pathname == home) { 
    header.addClass("navy"); 
    $("#navigation a.navy").attr("id", "current"); 

    navList.children().mouseenter(function() { 
     $("#navigation a.navy").removeAttr("id", "current"); 
    }); 

    nav.mouseleave(function() { 
     header.removeClass(colors).addClass("navy"); 
     $("#navigation a.navy").attr("id", "current"); 
    }); 
} 

});

回答

1
var pages = { 
    "Wiki.html": { 
     "className": "navy", 
    }, 
    "Home.html": { 
     "className": "red" 
    } 
    // add other pages here. 
}; 

var header = $("div#header"); 
var colors = "navy red yellow light-blue"; 
var nav = $("#navigation"); 
var navList = $("#navigation li"); 

function configure(page){ 
    var anchors = function(){ 
     return nav.find("a."+page.className); 
    } 
    header.addClass(page.className); 
    anchors().attr("id", "current"); 

    navList.children().mouseenter(function() { 
     anchors().removeAttr("id", "current"); 
    }); 

    nav.mouseleave(function() { 
     header.removeClass(colors).addClass(page.className); 
     anchors().attr("id", "current"); 
    }); 
} 

然後調用它:

configure(pages[pathname]); 
+0

哇!非常感謝!我怎麼稱呼它?記得我還在學習:) – Davis 2012-02-24 18:47:57

+0

好吧,這取決於。你想什麼時候調用它,在用戶做了什麼之後,或者頁面加載的時候?頁面加載時爲 – ggreiner 2012-02-24 19:08:31

+0

。 – Davis 2012-02-24 20:10:27