2013-09-01 2 views
3

내 응용 프로그램 홈 페이지의 일부 링크에서 페이드 효과를 사용하고 있습니다. 이것은 일부 JQuery와에 의해 수행되고있다 :JS in Rails 앱만 처음으로로드됩니다.

자바 스크립트는/내가 처음으로 응용 프로그램을 불 때 모두가 잘 작동

$(document).ready(function() { 
    $('.home_tile_text').hide().removeClass('text').addClass('text-js'); 
    $('.home_tile_overlay').hide().removeClass('overlay').addClass('overlay-js'); 

    $('.home_tile').mouseenter(function(){ 
     $(this).find('.text-js').finish().hide().fadeIn(); 
     $(this).find('.overlay-js').finish().hide().fadeIn(); 
    }); 
    $('.home_tile').mouseleave(function(){ 
     $(this).find('.text-js').finish().show().fadeOut(); 
     $(this).find('.overlay-js').finish().show().fadeOut(); 
    }); 
}); 

을 pages.js. 그러나 홈 페이지에서 나가서 돌아 왔을 때 페이지가 "새로 고침"될 때까지 페이드 효과가 더 이상 작동하지 않습니다. 어떤 아이디어?

답변

5

이것은 아마도 Rails 4의 새로운 기능 Turbolinks 때문일 수 있습니다. 터보 링크는 변경되는 페이지 부분 만 업데이트하여 클라이언트의 서버 요청을 줄입니다. 즉, 새 페이지를로드 할 때 document.ready (또는 jQuery에서 $(document).ready)이 다시 호출되지 않습니다.

한 솔루션은 turbolinks을 해제함으로써, 귀하의 application.js에서 당신의 gemfile에 gem 'turbolinks'require turbolinks을 제거하는 것입니다,하지만 쉽게 수정 그냥 패치 turbolinks 스크립트를 포함 application.js 파일에 require jquery.turbolinks을 추가하는 것입니다 모든 터보 링크 통화시 $(document).ready 번으로 전화하여 문제를 해결하십시오.

자세한 내용은 jQuery section in the turbolinks readme을 참조하십시오.

+1

매력처럼 작동했습니다. 감사! – drewwyatt