Js #urls在第一次点击时不会触发该功能

时间:2016-06-29 13:22:20

标签: javascript jquery

我想在网址更改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');}试了一下 它也只在第二次点击后执行,谢谢

2 个答案:

答案 0 :(得分:0)

您的事件处理程序在之前运行,锚标记会更改URL。因此,第一次通过时,您不会在URL中看到任何哈希值。第二次,有一个哈希(从第一次点击)。

您可能希望改用$(window).bind('hashchange', function (event) { ... });

答案 1 :(得分:0)

这是因为在实际更改URL之前触发了click事件。

您应该阅读锚本身的href属性:

var hashUrl = $(this).attr("href").substr(1);