document.ready没有解雇?

时间:2016-07-22 06:39:05

标签: javascript jquery ruby-on-rails

这不是没有加载jQuery的情况,但我觉得我错过了其他简单的东西...在这个暂存网站:https://hidden-tundra-8656.herokuapp.com/orders,一旦页面完成装载,"露营&背包"应该是自动选择的。

这是代码:

$(document).ready( function() {
  console.log("about to trigger initial click")
  $(".category-selector[data-id='"+gon.category_to_start+"']").click()
}) 

它绝对不会发生。有什么想法吗?我唯一可以想到的是category-selector是从Ruby中插入的,请参阅下面的视图代码,所以可能会导致它?

<div class="row">
   <% @item_categories.each do |ic| %>
      <div class="col-xs-6 category-box">
          <div class="row category-row">
              <div class="col-xs-12 table-display category-selector text-center" data-id="<%=ic.id%>">
                  <span class="labeler-response table-cell-display">
                     <%= ic.name %>
                  </span>
              </div>
          </div>
      </div>
  <% end %>
</div>

多一点信息。

代码中的console.log未被触发,并且gon.category_to_start已定义。页面上的所有其他jquery都运行得很好。

在此页面上,它正在加载application.js以及包含相关代码的单独orders/new.js。它首先加载jquery,然后加载application.js然后new.js。为了论证,我只是尝试将代码片段加载到application.js中,但它也没有在那里工作。这在本地服务器中工作正常。

4 个答案:

答案 0 :(得分:1)

如果您正在使用Turbolinks(默认设置为rails项目),则应使用page:load作为事件。

$(document).on("page:load", function() {
  console.log("about to trigger initial click");
  $(".category-selector[data-id='"+gon.category_to_start+"']").click();
});

注意

如果您处于生产模式,请确保运行bin/rake assets:precompile以使资产保持最新状态。

答案 1 :(得分:0)

问题似乎在于这一行

$(".category-selector[data-id='"+gon.category_to_start+"']").click()

没有gon.category_to_start的引用,因此data-id可能会获得一些未定义的值。

您还可以检查console.log是否记录了任何值

  

&#34;露营&amp;背包&#34;应该是自动选择的。

但我看到category-selector位于div元素上。您是否选择div,因为自动选择适用于复选框或单选按钮

答案 2 :(得分:0)

为什么在选择器中包含data-id? 您可以在文档就绪

上触发$('。classname')。触发器。('click')

答案 3 :(得分:0)

facepalm回答:预编译资产