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);
}

私が探しているのは、冗長性を減らすために2つを組み合わせる方法です。

URLにハッシュタグがある場合は関数をトリガーし、そうでない場合はサイドナビアイテムがクリックされた場合にのみ関数をトリガーします。

頭を包み込むことができないようです。どんな助けでも大歓迎です。

ありがとうございました。

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 に答える