我想在网址更改mysite.com/#url上执行某个功能,出于某种原因我第一次点击链接时它没有执行代码,第二次以及更多它按预期工作,这是代码:
$(document).on('click', '.JsLink', function(event) {
// hashUrl gets the url after the #
var hashUrl = window.location.hash.substr(1);
// if hashUrl is not empty should execute the function
if (hashUrl) {getResultsByUrl(hashUrl);}
});
链接:
<li class="li-menu JsLink"> <a href="#sale" >For Sale</a> </li>
<li class="li-menu JsLink"> <a href="#rent" >For Lease</a> </li>
函数没有问题因为我用if (hashUrl) {alert('hello');}
试了一下
它也只在第二次点击后执行,谢谢
答案 0 :(得分:0)
您的事件处理程序在之前运行,锚标记会更改URL。因此,第一次通过时,您不会在URL中看到任何哈希值。第二次,有一个哈希(从第一次点击)。
您可能希望改用$(window).bind('hashchange', function (event) { ... });
。
答案 1 :(得分:0)
这是因为在实际更改URL之前触发了click事件。
您应该阅读锚本身的href
属性:
var hashUrl = $(this).attr("href").substr(1);