0

在列表中,我有几个链接:

 <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 链接,则会将“#white”插入到我的 URL 中。(mydomain.com/#white) 我想避免重复,所以有没有办法检查 URL 中是否已经存在“#white”,如果存在,则不允许点击链接。

4

4 回答 4

1

默认情况下,这就像您所说的那样。如果 url 包含任何类型的 #value1 它不会重复,并且 url 永远不会看起来像:#value1#value1

于 2012-10-15T21:13:22.490 回答
1

使用 Javascriptwindow.location.hash调用来确定当前的 URL 锚点是什么,并以此为基础制定您的逻辑:

$('.dropdowner a').click(function (event) {
   if ($(this).attr('href')==window.location.hash){
      return false;
   }
});
于 2012-10-15T21:08:58.200 回答
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);
    }        
});


看:

于 2012-10-15T21:09:00.153 回答
1

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

$(function(){

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

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

    }

}
于 2012-10-15T21:09:05.440 回答