首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails javascript仅在重新加载后才起作用

Rails javascript仅在重新加载后才起作用
EN

Stack Overflow用户
提问于 2013-06-26 18:39:20
回答 8查看 32.2K关注 0票数 58

问题就是标题所说的。在我拥有的application.js中,javaScript在资产管道中,即assets/javaScript/myfile.js.cafee:

代码语言:javascript
复制
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require jquery.ui.all
//= requier twitter/bootstrap
//= require jasny-bootstrap
//= require_tree .

这是coffeescript

代码语言:javascript
复制
$(document).ready ->
  $("#close").click ->
    $(this).parent().parent().slideUp("slow")




  $( "#datepicker" ).datepicker
    dateFormat : "yy-mm-dd"


  player_count = $("#player option").length


  $('#btn-add').click ->
    $('#users option:selected').each ->
      if player_count >= 8
        $('#select-reserve').append("<option      value='"+$(this).val()+"'>"+$(this).text()+"</option>")
        $(this).remove()    
      else
        $('#player').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
        $(this).remove()
        player_count++


  $('#btn-remove').click ->
    $('#player option:selected').each ->
      $('#users').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
      $(this).remove()
      player_count--


  $('#btn-remove-reserve').click ->
    $('#select-reserve option:selected').each ->
      $('#users').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>")
      $(this).remove()


  $("#submit").click ->
   $("select option").prop("selected", "selected")

我可以在浏览器的源代码中看到javaScript已经加载,但它只有在我重新加载页面后才能工作。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-06-27 03:38:21

这是个turbolinks问题。感谢@zwippie将我引向正确的方向!解决方案是将我的coffeescript包装在下面的代码中:

代码语言:javascript
复制
ready = ->
// functions

$(document).ready(ready)
$(document).on('page:load', ready)
票数 29
EN

Stack Overflow用户

发布于 2016-08-02 05:14:01

对于turbolinks5.0,您必须使用turbolinks:load事件,该事件在第一次页面加载和每次turbolink访问时调用。更多信息:https://github.com/turbolinks/turbolinks#running-javascript-when-a-page-loads

CoffeeScript代码:

代码语言:javascript
复制
$(document).on 'turbolinks:load', ->
  my_func()

JavaScript代码:

代码语言:javascript
复制
document.addEventListener("turbolinks:load", function() {
  my_func();
})
票数 77
EN

Stack Overflow用户

发布于 2013-06-26 20:14:51

我猜这是turbolinks的问题。

从您的项目中删除turbolinks,或者将脚本修改为类似以下内容:

代码语言:javascript
复制
$(function() {
  initPage();
});
$(window).bind('page:change', function() {
  initPage();
});
function initPage() {
  // Page ready code...
}

正如前面提到的here

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17317816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档