Joyride Javascript教程不适用于页面加载

时间:2014-11-02 00:16:48

标签: jquery ruby-on-rails javascript

EDIT。在尝试了很多不同的解决方案后,我发现当我添加

* =要求兜风

我的application.css.scss文件导致javascript中断(不确定这是否属实:(

我再次在Chrome控制台上测试了它,当我跑

$("#tutorial").joyride({});

一旦没有出现,但如果我跑了两次,那就行了。所以我的application.js文件现在看起来像:

$(document).ready( function(){       
$("#tutorial").joyride({});
$("#tutorial").joyride({});

});

它只渲染一次教程框然后当你点击下一步它再次中断..

原始邮寄。

我在我的rails应用程序中使用ZURBS joyride插件来创建一个登机教程。 http://zurb.com/playground/jquery-joyride-feature-tour-plugin

我已经使用chrome检查器在控制台中运行了javascript,但它不能用于页面加载。

有关如何解决此问题的任何想法?

Application.js文件

//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require bootstrap
//= require turbolinks
//= require d3
//= require jquery.joyride
//= require modernizr.mq.js
//= require jquery.cookie.js
//= require_tree .

$(document).ready(function(){
    $("#tutorial").joyride({});
});

这就是我在index.html.erb文件中使用的内容

  <ol id='tutorial'>
    <li data-id="story">Tip content...</li>
    <li data-id="story">Tip content 2</li>
  </ol>

这显示索引中与data-id

对应的代码
 <div class="box-container">
  <div id="story" class="box">

    <h1>Welcome to WeWrite. </h1>
    <h3> Write stories together. </h3>

    <% @lines.each do |line| %>
        <div class="story">

            <div class="depth"><%= line.depth %></div> 
            <div class="story-link"><%= link_to "#{line.text}...",  line_path(line), :class => "story-link" %> </div>
        </div>
    <% end %>

将其添加到我的application.js文件中以查看脚本是否正在加载并且是

$(document).ready( function(){      
fireWhenReady();

});

function fireWhenReady() {
if(typeof $("#tutorial").joyride == "function") {
    $("#tutorial").joyride({});
    console.log("joyride");
}
else {
    setTimeout(fireWhenReady, 100);
}
}

3 个答案:

答案 0 :(得分:1)

您需要像演示一样设置autoStart : true选项。

$(window).load(function() {
    $('#joyRideTipContent').joyride({
        autoStart : true
        ,postStepCallback : function (index, tip) {
            if (index == 2) {
            $(this).joyride('set_li', false, 1);
            }
        }
        ,modal:true
        ,expose: true
    });
});

答案 1 :(得分:0)

根据您的评论,我建议您使用:

$(window).load(function(){
  $("#tutorial").joyride({});
})

这将确保每个东西都加载甚至子脚本。

答案 2 :(得分:0)

我可以确认同样的行为。需要两次召唤兜风来开始。

唯一值得注意的补充是列表中的bootstrap“hide”类。如果我删除它,则列表始终可见。

以下作品有一些奇怪的原因:

<h2 id="joyride1">Heading...</h2>
<h2 id="joyride1">Heading...</h2>
<h2 id="joyride1">Heading...</h2>
<h2 id="joyride1">Heading...</h2>

<ol id="joyride" class="hide">
    <li data-id="joyride1" data-text="Next" data-options="tip_location: top; prev_button: false">
        <p>Hello and welcome to the Joyride documentation page.</p>
    </li>
    <li data-id="joyride2" data-text="Next" data-options="tip_location: top; prev_button: false">
        <p>Hello and welcome to the Joyride documentation page.</p>
    </li>
    <li data-id="joyride3" data-text="Next" data-options="tip_location: top; prev_button: false">
        <p>Hello and welcome to the Joyride documentation page.</p>
    </li>
    <li data-id="joyride4" data-text="Next" data-options="tip_location: top; prev_button: false">
        <p>Hello and welcome to the Joyride documentation page.</p>
    </li>
</ol>

$(function () {
    $("#joyride").joyride({});
    $("#joyride").joyride({}); // NEEDED TO START JOYRIDE
});