복붙노트

[JQUERY] 4 레일 : 터보 링크 .ready $ (문서) ()를 사용하는 방법

JQUERY

4 레일 : 터보 링크 .ready $ (문서) ()를 사용하는 방법

해결법


  1. 1.여기에 내가 무엇을 ... 커피 스크립트 :

    여기에 내가 무엇을 ... 커피 스크립트 :

    ready = ->
    
      ...your coffeescript goes here...
    
    $(document).ready(ready)
    $(document).on('page:load', ready)
    

    마지막 줄은 터보 링크가 트리거 무엇 페이지로드를 수신합니다.

    편집 ... (요청에 따라) 자바 스크립트 버전을 추가 :

    var ready;
    ready = function() {
    
      ...your javascript goes here...
    
    };
    
    $(document).ready(ready);
    $(document).on('page:load', ready);
    

    편집 2 ... 용 레일 (5) (Turbolinks 5) 페이지 : 부하가 turbolinks된다 : 부하, 심지어 초기로드에 발사 될 것이다. 우리는 다음을 수행 할 수 있습니다 :

    $(document).on('turbolinks:load', function() {
    
      ...your javascript goes here...
    
    });
    

  2. 2.난 그냥이 문제를 해결하기위한 또 다른 옵션으로 배웠습니다. 당신이 JQuery와 - turbolinks 보석을로드 할 경우 일반적인 방법으로 jQuery를 쓸 수 있도록이 document.ready 이벤트에 레일 Turbolinks 이벤트를 바인딩합니다. 당신은 (기본적으로 : application.js)를 오른쪽 JS 매니페스트 파일에서 JQuery와 후 jquery.turbolinks를 추가합니다.

    난 그냥이 문제를 해결하기위한 또 다른 옵션으로 배웠습니다. 당신이 JQuery와 - turbolinks 보석을로드 할 경우 일반적인 방법으로 jQuery를 쓸 수 있도록이 document.ready 이벤트에 레일 Turbolinks 이벤트를 바인딩합니다. 당신은 (기본적으로 : application.js)를 오른쪽 JS 매니페스트 파일에서 JQuery와 후 jquery.turbolinks를 추가합니다.


  3. 3.최근에 나는 그것을 다루는 가장 깨끗하고 이해하기 쉬운 방법을 발견 :

    최근에 나는 그것을 다루는 가장 깨끗하고 이해하기 쉬운 방법을 발견 :

    $(document).on 'ready page:load', ->
      # Actions to do
    

    또는

    $(document).on('ready page:load', function () {
      // Actions to do
    });
    

    편집하다 (동일한 기능이 여러 번 실행하는 원인)로드 이벤트 : 문서에 바인딩 이벤트를 위임 한 경우, 그렇지 않으면 모든 페이지에 반동을 얻을 것이다, 당신은 준비 기능의 외부에 첨부해야합니다. 예를 들어,이 같은 모든 호출이있는 경우 :

    $(document).on 'ready page:load', ->
      ...
      $(document).on 'click', '.button', ->
        ...
      ...
    

    다음과 같이 준비 기능을 꺼내 :

    $(document).on 'ready page:load', ->
      ...
      ...
    
    $(document).on 'click', '.button', ->
      ...
    

    문서에 바인딩 위임 이벤트가 준비 이벤트에 바인딩 할 필요가 없습니다.


  4. 4.레일에 DemoZluk의 솔루션과 유사하지만 약간 짧은 4 문서를이 발견 :

    레일에 DemoZluk의 솔루션과 유사하지만 약간 짧은 4 문서를이 발견 :

    $(document).on 'page:change', ->
      # Actions to do
    

    또는

    $(document).on('page:change', function () {
      // Actions to do
    });
    

    외부 스크립트가있는 경우 재 작성 성가 시게 할 수없는 경우 전화 $ (문서) (.ready) 또는 모든 자바 스크립트를 기존,이 보석은 TurboLinks와 (문서) (.ready) $ 계속 사용하실 수 있습니다 것을 :은 https : //github.com/kossnocorp/jquery.turbolinks


  5. 5.새로운 레일 가이드에 따라 올바른 방법은 다음을 수행하는 것입니다 :

    새로운 레일 가이드에 따라 올바른 방법은 다음을 수행하는 것입니다 :

    $(document).on('turbolinks:load', function() {
       console.log('(document).turbolinks:load')
    });
    

    또는, 커피 스크립트에서 :

    $(document).on "turbolinks:load", ->
    alert "page has loaded!"
    

    .ready 단 하나의 이벤트 해고 될 이벤트 $ (문서)을 듣지 마십시오. 어떤 놀라움은, 필요는 jquery.turbolinks 보석을 사용하지합니다.

    레일 4.2 이상으로이 작품뿐만 아니라 5 레일.


  6. 6.주 : @ 깨끗한위한 SDP의 해답, 내장 된 솔루션

    주 : @ 깨끗한위한 SDP의 해답, 내장 된 솔루션

    다음과 같이 나는 그것을 고정 :

    다른 응용 프로그램에 의존 JS 파일은 다음과 같이 순서를 포함 변경으로 포함하기 전에 당신이 application.js을 포함해야합니다 :

    // in application.js - make sure `require_self` comes before `require_tree .`
    //= require_self
    //= require_tree .
    

    핸들은 application.js 바인딩하는 전역 함수를 정의

    // application.js
    window.onLoad = function(callback) {
      // binds ready event and turbolink page:load event
      $(document).ready(callback);
      $(document).on('page:load',callback);
    };
    

    지금 당신은 물건을 같이 바인딩 할 수 있습니다 :

    // in coffee script:
    onLoad ->
      $('a.clickable').click => 
        alert('link clicked!');
    
    // equivalent in javascript:
    onLoad(function() {
      $('a.clickable').click(function() {
        alert('link clicked');
    });
    

  7. 7.나를 위해 위의 작품 중에, 나는 .ready jQuery의 $ (문서)를 사용하지 않음으로써이 문제를 해결하지 않지만 사용하여 addEventListener 대신.

    나를 위해 위의 작품 중에, 나는 .ready jQuery의 $ (문서)를 사용하지 않음으로써이 문제를 해결하지 않지만 사용하여 addEventListener 대신.

    document.addEventListener("turbolinks:load", function() {
      // do something
    });
    

  8. 8.

    $(document).on 'ready turbolinks:load', ->
      console.log '(document).turbolinks:load'
    

  9. 9.당신은 사용해야합니다 :

    당신은 사용해야합니다 :

    document.addEventListener("turbolinks:load", function() {
      // your code here
    })
    

    turbolinks의 문서에서.


  10. 10.중 하나를 사용

    중 하나를 사용

    $(document).on "page:load", attachRatingHandler
    

    또는 동일한 효과를 얻을 CSTE 연구진 jQuery의 함수를 사용하여

    $(document).on 'click', 'span.star', attachRatingHandler
    

    자세한 내용은 여기를 참조하십시오 http://srbiv.github.io/2013/04/06/rails-4-my-first-run-in-with-turbolinks.html


  11. 11.부하 트리거 : 대신 "준비"기능과 결합 그 사건을 저장할 변수를 사용하여, 당신은 할 때마다 페이지 준비 이벤트를 트리거 할 수 있습니다.

    부하 트리거 : 대신 "준비"기능과 결합 그 사건을 저장할 변수를 사용하여, 당신은 할 때마다 페이지 준비 이벤트를 트리거 할 수 있습니다.

    $(document).on('page:load', function() {
      $(document).trigger('ready');
    });
    

  12. 12.여기에 내가 일이 두 번 실행되지 않도록하기 위해 수행 한 내용은 다음과 같습니다

    여기에 내가 일이 두 번 실행되지 않도록하기 위해 수행 한 내용은 다음과 같습니다

    $(document).on("page:change", function() {
         // ... init things, just do not bind events ...
         $(document).off("page:change");
    });
    

    $ (문서) CSTE 연구진 ( "페이지 : 변화") 또는 사용 : 나는 JQuery와 - turbolinks 보석을 사용 또는 $를 (문서) .ready와 $ (문서) CSTE 연구진 ( "로드 페이지")를 결합 찾을 자체 것은 unexpectedly- 동작 - 특히 당신은 개발에 있다면.


  13. 13.나를 위해 좋은 일을하고 다음의 사용을 자세히 다음 문서를 발견 :

    나를 위해 좋은 일을하고 다음의 사용을 자세히 다음 문서를 발견 :

    var load_this_javascript = function() { 
      // do some things 
    }
    $(document).ready(load_this_javascript)
    $(window).bind('page:change', load_this_javascript)
    

  14. 14.내가 Turbolinks 5 사람들 업그레이드를 위해 여기를 떠날 거라고 생각 : 코드를 해결하는 가장 쉬운 방법에서 이동하는 것입니다 :

    내가 Turbolinks 5 사람들 업그레이드를 위해 여기를 떠날 거라고 생각 : 코드를 해결하는 가장 쉬운 방법에서 이동하는 것입니다 :

    var ready;
    ready = function() {
      // Your JS here
    }
    $(document).ready(ready);
    $(document).on('page:load', ready)
    

    에:

    var ready;
    ready = function() {
      // Your JS here
    }
    $(document).on('turbolinks:load', ready);
    

    참조 : https://github.com/turbolinks/turbolinks/issues/9#issuecomment-184717346


  15. 15.

    $(document).ready(ready)  
    
    $(document).on('turbolinks:load', ready)
    

  16. 16.테스트 많은 솔루션은 마침내왔다. 이 많은 코드가 확실히 두 번 호출되지 않습니다.

    테스트 많은 솔루션은 마침내왔다. 이 많은 코드가 확실히 두 번 호출되지 않습니다.

    VAR는 = 거짓 has_loaded; VAR 준비 = 함수 () { 경우 {(! has_loaded) has_loaded 사실 =; // YOURJS 여기 } } $ (문서) .ready (준비); $ (문서) .bind ( '페이지 : 변화', 대기);


  17. 17.나는 보통 내 레일 4 개 프로젝트에 대해 다음을 수행하십시오

    나는 보통 내 레일 4 개 프로젝트에 대해 다음을 수행하십시오

    application.js에서

    function onInit(callback){
        $(document).ready(callback);
        $(document).on('page:load', callback);
    }
    

    그리고 대신에 $ 사용하는의 .js 파일의 나머지 부분에서 (함수 () {}) 나는 전화의 onInit (함수 () {})


  18. 18.첫째, JQuery와 - turbolinks 보석을 설치합니다. 그리고, 그것의 에 application.html.erb의 몸의 끝에서 포함 된 자바 스크립트 파일을 이동하는 것을 잊지 마세요.

    첫째, JQuery와 - turbolinks 보석을 설치합니다. 그리고, 그것의 에 application.html.erb의 몸의 끝에서 포함 된 자바 스크립트 파일을 이동하는 것을 잊지 마세요.

    당신은 속도 최적화 이유로 바닥 글에서 응용 프로그램의 자바 스크립트 링크를 넣어 경우, 여기에 설명 된 바와 같이, 당신은 너무 태그로 이동해야합니다 그것이로드 태그의 콘텐츠 전에. 이 솔루션은 날 위해 일했습니다.


  19. 19.부하를 내가 사용 있도록 : 나는 준비 turbolinks하는 기능을 사용할 때 제 기능을 두 배로 발견

    부하를 내가 사용 있도록 : 나는 준비 turbolinks하는 기능을 사용할 때 제 기능을 두 배로 발견

    var ready = function() {
      // you code goes here
    }
    
    if (Turbolinks.supported == false) {
      $(document).on('ready', ready);
    };
    if (Turbolinks.supported == true) {
      $(document).on('turbolinks:load', ready);
    };
    

    그 방법 turbolinks이 지원되는 경우 귀하의 기능을 두 번하지 않습니다!

  20. from https://stackoverflow.com/questions/18770517/rails-4-how-to-use-document-ready-with-turbo-links by cc-by-sa and MIT license