2015-10-26 50 views
0

我有超鏈接與分配給客戶端JavaScript事件處理程序的href =「#」。當通過ajax發出請求時,這些鏈接的行爲與預期的一樣(通過「點擊」事件),但是當我偶爾使用由Rails link_to helper生成的鏈接時,這些href值突然變得損壞:href =「users/1」/photo/4「爲例。頁面上的每個鏈接都會提供相同的值!爲什麼rails會改變我的佔位符hashtag值?

當我使用Chrome的Inspect元素時,它顯示呈現的href值仍然是href =「#」,但是翻轉它顯示它指向不需要的url。事件偵聽器失敗。這是turbolinks迫使我的鏈接佔位符承擔不必要的價值?爲什麼rails會與我的鏈接混淆?

這裏是典型的JavaScript代碼分配一個事件處理程序:

Menu.prototype.activatePhotosLink = function() { 
    var self = this; 

    // ======= get all user photos ======= 
    $("#main-nav").on("click", function(){ 
     event.preventDefault(); 
     self.getUserPhotos(); 
    }); 
} 

這裏的鏈接通過Chrome的外觀檢查元素與HREF =「#」:

<a href="#" id="main-nav" data-no-turbolink="true">photos</a> 

我試圖解決這個問題用data-no-turbolink =「true」但沒有奏效。同時,這裏是我在瀏覽器的見「鏈接工具提示」上翻滾:

localhost:30000/users/1# 

爲什麼不HREF =「#」?謝謝你的任何想法!

回答

0

路徑沒有損壞。它應該是您所在頁面的路徑,並附加hashtag。這與Rails和JavaScript無關,而是HTML中的一項功能。在HTML中,如果要創建頁面中某個元素的錨鏈接,請將其id傳遞給href。你可以閱讀更多關於它here

如果你不想要一個網址,當你將鼠標懸停在鏈接出現,您可以使用href='javascript:void(0)'

+0

你剛纔救了我小時的工作量。現在按預期工作。謝謝! – tomBeach

相關問題