2016-06-12 43 views
1

我有一個rails應用程序https://hr4d.herokuapp.com問題是,當我訪問一個新頁面時,頁面無法正確加載,這使得我的JQuery無效。你可以訪問該網站,看看我的意思。這是我的JQuery:如何在訪問頁面時重新加載

$('document').ready(function() { 

    $('.dropdown-services').hide(000); 

    $('#caret').click(function() { 

     if($('.dropdown-services').is(":visible")) { 
      $('.dropdown-services').slideUp(300); 
     } 
     else { 
      $('.dropdown-services').slideDown(300); 
     } 
    }); 

}); 

這裏是我的導航欄的代碼:

<div class="navbar"> 

    <div class="box first"> 
     <a href="/pages/home" class="link-disabled">HR4D</a> 
    </div> 

    <div class="box second"> 
     <span class="tagline">Define, Develop, Deliver, and Differentiate</span> 
     <br> 

     <a class="link" href="/pages/home"> 
     Home 
     </a> 

     <a class="left link" id="services" href="/pages/services"> 
     Services 
     </a> 
     <div class="caret" id="caret"></div> 

     <a class="left link" href="/pages/contact"> 
     Contact Us 
     </a> 

     <a class="left link" href="/pages/about"> 
     About 
     </a> 

    </div> 

</div> 

不知道如何解決這個問題。任何幫助表示讚賞。

回答

1

這個問題很大程度上是由Turbolink引起的。我經常解決這個問題的一個方法就是完全禁用Turbolink,或者在代碼的特定部分禁用Turbolink。 要全局禁用,請在app/assets/javascripts/application.js中刪除需要渦輪鏈接的線路。

+0

是的工作。非常感謝你! –

0

真正的問題不在於重新加載,它正在解決問題,使頁面無法正確加載。

您應該從app/assets/javascripts/application.js文件中刪除以下行:

//= require turbolinks 

這是非常有可能解決這個問題。但是,您可能更願意在應用程序中繼續使用TurboLink。如果是這樣,您必須處理頁面動態更新時觸發的獨特TurboLinks事件。這些事件是「頁面:加載」和「頁面:恢復」,應該按照與回調相同的方式處理。你可以使用下面的公式來做到這一點。

在HTML,包括從你目前的Javascript ready處理程序加載代碼的腳本:

<body> 
    <!-- important body stuff --> 
    <script> 
    jQuery(document).ready(onThisPageReady); 
    jQuery(document).on('page:load', onThisPageReady); 
    jQuery(document).on('page:restore', onThisPageReady); 
    </script> 
</body> 

onThisPageReady功能JavaScript源爲您正在構建的網頁所屬或app/assets/javascripts/application.js如果它適用於所有頁面。只要這包括在相應的JavaScript資源文件:

function onThisPageReady() { 
    $('.dropdown-services').hide(000); 

    $('#caret').click(function() { 
     if($('.dropdown-services').is(":visible")) { 
      $('.dropdown-services').slideUp(300); 
     } 
     else { 
      $('.dropdown-services').slideDown(300); 
     } 
    }); 
}); 

一旦你做到了這一點,你已經和你的TurboLinks動態初始化工作。在TurboLinks Classic github project上找到TurboLinks Events的完整列表。如果您目前正在構建Rails 5應用程序,則TurboLinks的版本爲新的,並且有一組完全不同的要註冊的事件,您可以在TurboLinks 5 Full List of Events中找到這些事件。

相關問題