2012-10-15 33 views
0

在名单上有几个链接的HREF:检查URL中包含的链接我已经点击

<ul class="dropdowner" id="coll-filter"> 
    <li><a href="#black">Black</a></li> 
    <li><a href="#white">White</a></li> 
    <li><a href="#blue">Blue</a></li> 
</ul> 

另一个输出我使用+代替#在URL即:

<ul class="dropdowner" id="coll-filter"> 
    <li><a href="+black">Black</a></li> 
    <li><a href="+white">White</a></li> 
    <li><a href="+blue">Blue</a></li> 
</ul> 

如果我点击链接白色,然后“#白色”插入到我的网址。 (mydomain.com/#white) 我想避免重复,所以有没有办法检查URL中是否存在“#white”,如果是,请不要点击链接。

回答

1

使用JavaScript window.location.hash调用来确定当前的URL锚是什么,立足于你的逻辑:

$('.dropdowner a').click(function (event) { 
    if ($(this).attr('href')==window.location.hash){ 
     return false; 
    } 
}); 
+0

反正是有匹配的关键字?我正在使用哈希标记,但在某些情况下,我的输出是我们使用“+”,即:“+白色” – user992731

1

下都将禁用该URL的#或之后的组件相匹配的链接+还有一个让任何先前禁用链接:

$('.dropdowner a').on('click', function() { 
    var url = window.location, 
     tag = url.split('+'), 
     hash = window.location.hash, 
     supress = function(term) { 
      $('.dropdowner a[href=' + term + ']').bind('click', false); 
     };  
    $('.dropdowner a').unbind('click', false); 
    if (hash) {    
     supress(hash); 
    } else if (typeof tag !== 'undefined') {    
     supress('+' + tag); 
    }   
}); 


参见:

1

这应该做你要找什么 - 的location.hash为您提供了从URL当前锚散列

$(function(){ 

    $('ul.dropdowner').find('a').click(function() { 

     if ($(this).attr('href') == location.hash) { 
      return false; 
     } 

    } 

} 
1

这种行为就像你默认说的那样。 如果URL包含任何形式的#值1 将副本和URL可以永远看起来像:#值1#值1