检查URL是否包含我已单击的链接的href

时间:2012-10-15 21:04:11

标签: jquery duplicates

在列表中我有几个链接:

 <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>

我在网址中使用的另一个输出是+而不是#:

  <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>

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

4 个答案:

答案 0 :(得分:1)

使用Javascript window.location.hash调用来确定当前网址锚是什么,并将您的逻辑基于此:

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

答案 1 :(得分: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);
    }        
});


请参阅:

答案 2 :(得分:1)

这应该可以满足您的需求 - location.hash为您提供来自URL的当前锚点哈希

$(function(){

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

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

    }

}

答案 3 :(得分:1)

这个行为就像你默认说的那样。 如果url包含任何类型的#value1 它将重复,并且网址永远不会像:#value1#value1