2016-06-29 126 views
0

我想執行一個URL更改函數mysite.com/#url,出於某種原因,當我第一次點擊一個鏈接時它不會「T執行代碼,第2多的時候,它按預期工作,這裏是代碼:Js #urls不會觸發第一次點擊的功能

$(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

嘗試'$(文件)。在( '點擊',」 .JsLink a'' –

+0

請檢查您的當前頁面的URL,它可能已經有#sale或#rent。如果是的話,請刪除它,然後再次點擊 –

回答

0

發生這種情況是因爲在實際更改URL之前觸發了單擊事件。

你應該閱讀錨本身的href屬性:

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

您的事件處理程序在之前運行,URL由錨標記更改。因此,第一次通過時,您在URL中看不到任何散列。第二次,有一個哈希(從第一次點擊)。

您可能想用$(window).bind('hashchange', function (event) { ... });代替。

+0

我不認爲這實際上解決了這個問題,雖然你的問題是正確的。 –

+0

@robertotomás你爲什麼這麼說? – smarx

+0

你知道,我錯了。如果你首先進入沒有任何錨點的頁面,並且你的第一次點擊加載了錨點,你會得到同樣的行爲。 –

相關問題