マークアップで通常のリンクを使用するAJAXナビゲート可能なサイト(CSS-Tricksから取得したコード)を構築していますが、それらを.js経由のハッシュリンクに置き換えています。
同じコンテンツをリロードするだけのリンクをクリックできるようにしたくありません。私はハッシュを使用しているので、ホームページ以外のページ(最初のロード時)では、この問題は自動的に解決します(ユーザーが現在のURLハッシュのハッシュリンクをクリックしても何も起こりません)。
これを関数として定義するまで機能していたソリューションがありました(再利用する必要があるため)。$(this)を使用して、クリックされたリンクを取得し、現在のページへのリンクである場合はfalseを返しました。ただし、これにより、クリックされたリンクではなく、ウィンドウが(配列オブジェクトとして)返されます。
代わりにクリックしたリンクを選択するにはどうすればよいですか?
// Use hashes instead of reloads to navigate the site.
function initiateHashNav(linkContainers) {
var $this = $(this);
$(linkContainers).delegate('a', 'click', function() {
// Restrict clicking on link for current page.
if ($this.attr('href') == window.location.href) {
return false;
} else {
// The hash shouldn't contain window.location (clean URLs are happy URLs!).
window.location.hash = $this.attr('href').substr(window.location.origin.length);
return false;
}
});
}