2012-10-18 68 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(); 
}