gpt4 book ai didi

jquery - 仅当非点击时才更改 hash

转载 作者:行者123 更新时间:2023-12-01 03:49:36 25 4
gpt4 key购买 nike

我正在用这个

$(window).bind('hashchange', gotohash);

向我的应用程序添加深层链接。

我的问题是,当我单击 <a> 时它也会触发与 href=#whatever我只想在用户使用浏览器的后退和前进按钮或直接访问包含哈希值的 url 时使用它。

我在想hashChangeEnabled=true/false然后在每次点击时将其关闭

但是有没有更简单的方法来检测是否是由点击引起的?

最佳实践是什么?

<小时/>

我的解决方案

var disableHashChange = false;

$(window).bind('hashchange', function(){
if(!disableHashChange ){
gotohash();
}
disableHashChange = false;
});

$('.link').click(function(){
disableHashChange = true;
}

回答,作者:imsky

var lastLinkEvent;

$(window).bind('hashchange', function(){
if(lastLinkEvent != window.location.hash){
gotohash();
lastLinkEvent = "";
}
});

$('.link').click(function(){
lastLinkEvent = $(this).attr('href');;
}

谢谢

最佳答案

当您更改位置时,将触发 hashchange 事件,因此,如果您不希望在单击链接时触发该事件,请更改链接 href 属性或添加使用 preventDefault 的点击处理程序。

编辑:鉴于您希望链接正常工作,您应该设置一个仅限制链接事件的应用程序变量,例如 lastLinkEvent 并将其设置为其 URL 中包含的哈希值。然后在处理函数中,检查 lastLinkEvent 是否已经是哈希值,如果是,则阻止执行。

关于jquery - 仅当非点击时才更改 hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10063898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com