我正在寻找有关如何使用jquery / jquerymobile禁用重定向到同一页面的链接的最佳做法。
例如,如果我正处于hompepage并且有一个指向主页的链接,它甚至不应该刷新页面。
我的链接代码:
<a href="Homepage.aspx" rel="external">Home</a>
答案 0 :(得分:1)
完全未经测试,但根据您的代码编写方式,这可能会有效。
$('a').each(function(){
if($(this).attr('href') === window.location.pathname)
$(this).removeAttr('href');
// Alternatively: $(this).attr('href','#');
});
答案 1 :(得分:1)
我对jquery / jquery mobile不太熟悉,知道这是不是最好的做法,但它应该有效。
$("a").each(function(){
if(window.location.href==this.href)
this.onclick=function(){return false};
});
答案 2 :(得分:1)
您可以使用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()
答案 3 :(得分:0)
for (var a = document.getElementsByTagName("A"), b = 0; b < a.length; b++) {
if (a[b].href === window.location.href.split("#")[0] && a[b].hasChildNodes()) {
for (var c = 0; b < a[b].childNodes.length; c++) {
a[b].parentNode.insertBefore(a[b].childNodes[c].cloneNode(!0), a[b]);
}
}
}