4

私はこのプラグインhttp://www.asual.com/jquery/address/を私のウェブサイトのハッシュ変更などを検出するために使用しています。これはナビゲーションにのみ使用されるため、ユーザーエクスペリエンスの重要な部分です。これで、ハッシュが変更されない場合、またはクリックされた最後のハッシュ URL と変わらない場合 (たとえば、私が例にいる場合) にイベントがトリガーされないことを除いて、これは私が行っているすべてのことに対して完璧に機能します。 com/home を開き、ホームページ アイコンをもう一度クリックしても、通常のリンクを使用している場合と同様に、ページが再度リロードされることはありません。URL の一部であるすべてのリンクに対してこれを達成する方法を理解できませんでした。(ナビゲーション部分ではないタグを使用しているため、すべてのタグだけではありません。

$.address.change(function(event){  
 ///events to be triggered on hash change
});
4

1 に答える 1

5

onhashchangeイベントには適切な名前が付けられており、ハッシュが変更されたときにのみ発生します。

この問題について私が知っている唯一の解決策は、同じ関数をホームページアイコンのクリックイベントにバインドすることです。

また、jQueryはハッシュ変更のための独自のイベントを提供します。

$(window).on("onhashchange", function (e) {
     route();
})
$(".icon").on("click", function(e) {
     location.hash == "#/" ? route(): null;
})

また、これらがタグである場合、たとえば、#navdivでは次のようになります。

$("#nav").delegate("a", "click", function () {
     location.hash == this.href ? route() : null;
})

または、これをすべてのタグに適用することもできます。

$("a").on("click", function () {
     location.hash == this.href ? route() : null;
})
于 2012-07-07T02:24:18.243 に答える