2012-10-18 66 views
1

我有一個邊導航是,在點擊一個鏈接,會做一定的功能:的JavaScript條件語句

$(".side-nav ul li a").click(function(event) { 
    $(".side-nav").stop().animate({"margin-top": "0px"}, 450); 
}); 

我也有這個同樣的功能觸發,如果網頁加載有一個主題標籤

if(window.location.hash) { 
    $(".side-nav").stop().animate({"margin-top": "0px"}, 450); 
} 

我在尋找的是一種將兩者結合以減少冗餘的方法。

如果URL有一個hashtag,則觸發該函數,否則只有在單擊sidenav項目時觸發該函數。

我似乎無法繞過我的頭。任何幫助將非常感激。

謝謝。

回答

4

將代碼放在函數中並在兩個地方調用它。

function sideNav() { 
    $(".side-nav").stop().animate({"margin-top": "0px"}, 450); 
} 

$(".side-nav ul li a").click(function(event) { 
    sideNav(); 
}); 

if(window.location.hash) { 
    sideNav(); 
} 

而且你click處理器實際上可以改寫這樣如果沒有其他的代碼運行:

$(".side-nav ul li a").click(sideNav); 

如果有需要傳遞到sideNav任何參數,那麼這個改寫贏得」不適合。他們需要從調用函數的點擊處理程序中手動傳遞。

+1

我給你舉給予好評的爲25秒快速:) – Jivings

+0

+1,我只想補充「你的點擊處理程序實際上可以改寫這樣如果沒有其他代碼運行**無參數通過**:「 – jbabey

+0

@jbabey:沒錯,我會更新以指出可能性。 –

1
var animateSideNav = function() { 
    $(".side-nav").stop().animate({"margin-top": "0px"}, 450); 
} 

$(".side-nav ul li a").click(animateSideNav); 

if(window.location.hash) { 
    animateSideNav(); 
}