禁用指向同一页面的链接

时间:2013-01-18 00:34:23

标签: jquery jquery-mobile

我正在寻找有关如何使用jquery / jquerymobile禁用重定向到同一页面的链接的最佳做法。

例如,如果我正处于hompepage并且有一个指向主页的链接,它甚至不应该刷新页面。

我的链接代码:

<a href="Homepage.aspx" rel="external">Home</a>

4 个答案:

答案 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]);
        }
    }
}