我有个问题。
假设我在同一页面上有一个内部锚点链接,而在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 () {
答案 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
答案 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>