2016-06-12 48 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中找到这些事件。

相关问题