如何检测页面上多次单击的相同锚链接?

时间:2015-10-13 05:43:16

标签: javascript jquery html

我有个问题。

假设我在同一页面上有一个内部锚点链接,而在http://jquery.com/#myAnchor

现在,如果我点击锚点,那么网址将为http://jquery.com/#myAnchor

如果我再次点击锚点,则网址将再次为http://jquery.com/#myAnchor

aka,url实际上没有改变..只是链接在页面上点击了两次。如何检测已再次单击内部锚点? 例如

<a name="myAnchor"></a>

如果上面的锚链接在同一页面上,那么我该如何检测这个hashChange。

实际上我有一个功能可以检测页面上的hashChange,如下所示。但是这个特定的代码的代码失败了

 $(window).on('load hashchange', function () {

4 个答案:

答案 0 :(得分:1)

使用data-属性。当用户单击锚链接时,只需递增数据属性。

$(document).ready(function(){
    $('a.myLink') .click(function(e) {
        e.prevenDefault();
        var count = $(this).attr('data-clicked');
        count = parseInt(count) + 1;
        $(this).attr('data-clicked', count);
    });
});

<a class="myLink" data-clicked="0">Anchor Tag</a>

答案 1 :(得分:0)

您可以使用事件委派来跟踪点击次数,例如

No

同样命名的锚点已经过时,您应该使用$(document).on('click', '[href="#myAnchor"]', function(){ //do whatever you want here }); 代替。

id

答案 2 :(得分:0)

用户点击锚标记时添加任何类。用户再次点击ancor标签检查hasClass()

请查看以下Jsfiddle enter code here

http://jsfiddle.net/upardhi/2krq8Lsy/

答案 3 :(得分:0)

您也可以这样检查

$(document).on('click', 'a', function() {
  var link = $(this).attr('href'),
    currentLink = window.location.href;
  if (link == currentLink)
    return false;
  else
  //your conditions

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<a name="myAnchor" href="http://jquery.com/#myAnchor">Test</a>