1

我有一个侧边导航,点击链接后,它会执行某些功能:

$(".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 有标签,则触发该功能,否则仅在单击 sidenav 项目时触发该功能。

我似乎无法解决这个问题。任何帮助将非常感激。

谢谢你。

4

2 回答 2

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,那么这种重写将不合适。它们需要从调用该函数的单击处理程序中手动传递。

于 2012-10-18T20:51:56.580 回答
1
var animateSideNav = function() {
  $(".side-nav").stop().animate({"margin-top": "0px"}, 450);
}

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

if(window.location.hash) {
  animateSideNav();
}
于 2012-10-18T20:52:21.230 回答