jquery/jquerymobile で同じページにリダイレクトされるリンクを無効にする方法のベスト プラクティスを探しています。
たとえば、私がホームページにいて、ホームページを指すリンクがある場合、ページを更新することさえできません。
私のリンクのコード:
<a href="Homepage.aspx" rel="external">Home</a>
jquery/jquerymobile で同じページにリダイレクトされるリンクを無効にする方法のベスト プラクティスを探しています。
たとえば、私がホームページにいて、ホームページを指すリンクがある場合、ページを更新することさえできません。
私のリンクのコード:
<a href="Homepage.aspx" rel="external">Home</a>
完全にテストされていませんが、コードの記述方法によっては、これが機能する可能性があります。
$('a').each(function(){
if($(this).attr('href') === window.location.pathname)
$(this).removeAttr('href');
// Alternatively: $(this).attr('href','#');
});
これがベストプラクティスであるかどうかを知るには、jquery/jquery mobile に精通していませんが、うまくいくはずです。
$("a").each(function(){
if(window.location.href==this.href)
this.onclick=function(){return false};
});
現在の URL を解析して、ページ名window.location.href
を抽出できます。
次に、各リンクを反復処理し、現在のページの値と同じ href 値を持つリンクの動作を追加できます
var currentPage = ....// extract the page from window.location.href
$('a').each(function(index, element) {
var currentA = $(this);
if (currentA.attr('href') == currentPage) {
// Append a listener on the click event that will return false
// and stop the default behaviour
currentA.on('click', false);
}
});
注: ハンドラー関数として false を設定することは、false を返す無名関数を作成することと同じであり、呼び出しevent.stopPropoagation()
と呼び出しを行う関数を作成することと同じです。event.preventDefault()