Turbolinks消灭了jQuery Mobile类

时间:2016-10-18 22:34:20

标签: javascript jquery ruby-on-rails jquery-mobile turbolinks

当我使用Turbolinks在我的rails应用程序中加载页面时,DOM缺少jQuery Mobile通常应用的样式。我的所有JavaScript文件都运行;唯一的问题是我失去了JavaScript所需的一些样式实际上工作。

例如,使用Turbolinks,我的标题是:

<a rel="external" href="/">MY SITE</a>

没有,它是:

<a rel="external" href="/" class="ui-link">MY SITE</a>

我已经确认我的JS文件正在使用Turbolinks运行。问题是预期的jQuery Mobile类不存在。

我不确定在点击Turbolink时如何确保应用这些类。对于正确的方向或区域,我将不胜感激。

我尝试通过以下方式包装JavaScript:

$(document).ready(function () {
  //functions
});

$(document).on('turbolinks:load', function() {
  //functions
});

我把coffeescript包装在同一个地方:

ready = ->
  #coffee
$(document).on('turbolinks:load', ready)

两者似乎都适用于我正常的JS / coffeescript活动,所以这不是问题 - 它只是丢失的jQuery Mobile类。

我的application.js文件是:

//= require jquery
//= require jquery_ujs
//= require jquery.mobile
//= require js-routes
//= require turbolinks
//= require twitter/bootstrap
//= require_tree .

我尝试重新排序这几种不同的方法无济于事。

我的所有JavaScript都是用app/assets/javascripts/base.js编写的,app/assets/javascripts中有几个coffeescript文件。

我尝试使用jquery-turbolinks,但它没有帮助,也没有设法解决根问题,所以我删除了它。

我也多次运行bundle exec rake assets:precompile:clean:clobber),所以我认为这不是问题。

这一切都在开发中,但问题也存在于生产中。

1 个答案:

答案 0 :(得分:1)

The "answer" is that Turbolinks and jQuery Mobile do many of the same things (both replace full page loads with AJAX), and one does not need to use both, and they are not designed to work together. JQM is better suited for a site that has to be mobile optimized (most sites?).

I uninstalled Turbolinks, and everything was solved.

Please correct anything I've mischaracterized.