programing

JQuery는 Rails 4 응용프로그램에서 페이지 새로 고침 시에만 로드됩니다.

stoneblock 2023. 10. 26. 20:36

JQuery는 Rails 4 응용프로그램에서 페이지 새로 고침 시에만 로드됩니다.

저는 Rails 4 어플리케이션을 만들었고 이미지 팝업 효과를 위해 팬시박스 라이브러리를 추가했습니다.페이지가 새로 고쳐질 때만 잘 작동합니다.사용자가 페이지를 새로 고치지 않으면 jquery가 전혀 작동하지 않습니다.작은 jquery 방법으로도 테스트를 해보았지만 모두 페이지 리프레시 후에만 작동합니다.저도 트위터 부트스트랩을 사용하고 있습니다.

내 assets/application.js 파일:

//= require jquery
//= require jquery_ujs
//= require fancybox
//= require twitter/bootstrap
//= require turbolinks
//= require_tree .


$(document).ready(function() {
  $(".fancybox").fancybox();
    $("#hand").click(function(){
     if($("#check6").is(':visible'))
     {
      $("#check6").hide();
      }
     else
     {
      $("#check6").show();
      }
    });
});

네, 저는 당신의 문제를 충분히 이해한다고 생각합니다.터보링크를 사용하면 브라우저가 페이지를 다시 로드할 수 없기 때문에 문서 준비 이벤트에 바인딩하는 대부분의 플러그인과 라이브러리가 작동을 중지합니다.이러한 문제를 해결하기 위한 방법이 있지만 가장 쉽게 해결할 수 있는 방법은 jquery.turbolinks를 사용하는 것입니다.

사용 방법은 이것을 당신의 것에 추가하기만 하면 됩니다.Gemfile:

gem 'jquery-turbolinks'

그리고 이것은 당신에게.assets/javascripts/application.js파일:

//= require jquery.turbolinks

당신이 가도 좋을 거에요

참고: 터보링크를 사용할 필요는 없지만 유용하고 전체 페이지를 새로 고치지 않아도 되므로 요청이 더 빨라집니다.Turbolinks는 클릭한 링크의 내용을 AJAX를 통해 가져와 동일한 페이지에 렌더링하므로 자산(JS 및 CSS)을 다시 로드하는 오버헤드를 제거할 수 있습니다.당신의 페이지가 그것과 함께 작동하도록 해보세요.이전 문단의 도서관을 이용했을 때는 별다른 문제가 없었습니다.페이지에 CSS와 JS가 많을수록 터보링크를 사용하면 더 큰 향상을 얻을 수 있습니다.

이안은 좋은 답변을 했고, 이번 답변은 거기에 추가된 것입니다. (그래서 글을 쓸 때 아무에게도 실제로 코멘트를 달지 못하게 할 것입니다.)

https://github.com/rails/turbolinks/ #jqueryturbolinks에서:

Add the gem [gem 'jquery-turbolinks'] to your project, then add the following line to your JavaScript manifest file, after jquery.js but before turbolinks.js:

//= require jquery.turbolinks

추가하기 전에require jquery.turbolinks그래서 좀 까다로웠던 것 같아요.그리고 이것을 새로운 방법으로 추가했는데 더 잘 됐으면 좋겠습니다.

코드 월러스의 대답과 이안의 대답을 모두 따를 때까지 일이 제대로 진행되지는 않았지만, 저에게는 더 많은 것이 있었습니다.jquery.turbolinks Read me에 설명되어 있듯이, 순서는 매우 구체적이어야 합니다.

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//
// ... your other scripts here ...
//
//= require turbolinks

또한, 여기에 기술된 처럼 속도 최적화를 위해 애플리케이션 자바스크립트 링크를 바닥글에 넣으셨다면, 제가 그랬던 것처럼 당신은 그것을 안으로 옮겨야 할 것입니다.<head>태그를 지정하여 의 내용보다 먼저 로드합니다.<body>꼬리표를 매다

터보링크가 여기서 문제입니다.웹페이지의 성능을 향상시키기 위해 레일에 터보링크가 추가됩니다.이 솔루션이 작동 중입니다.

<%= link_to "Create New Form", sampleform_path, 'data-no-turbolink' => true %>

자세한 내용은 를 참조하십시오.

다음 코드 줄을 제거합니다.

//= require turbolinks

그런 다음 이것을 추가합니다.

//= require jquery.turbolinks

언급URL : https://stackoverflow.com/questions/17881384/jquery-gets-loaded-only-on-page-refresh-in-rails-4-application