Localhost运行jquery两次?

时间:2013-03-08 14:29:55

标签: jquery ruby-on-rails

我几个月来一直在研究Rails应用程序。今天,当我在localhost上运行应用程序时,似乎jquery在每个页面上执行两次。

我在运行iMac。

有些症状是:

  1. DataTables告诉我“无法重新初始化DataTables”
  2. 全日历在页面上显示2个日历,而不是1个
  3. Bootstrap下拉菜单不起作用
  4. 这真让我感到困惑!!!

    感谢您的帮助!

    UPDATE1

    当我部署到Rails虚拟服务器时,同一个应用程序运行正常。因此,在我看来它与我的iMac环境有关。

    我不确定要显示的代码。因为jquery / javascript代码在上面的所有数字示例中似乎都会触发两次。

    以下是日历的视图代码(日历现在在页面上显示两次):

    <h2><%= current_user.employee.employee_full_name %> - Labor Month</h2>
    <%= content_tag "div", id: "calendar", data: {employeeid: current_user.employee.id} do %>
    <% end %>
    

    咖啡脚本:

    $(document).ready ->
    
    $('#calendar').fullCalendar
      ignoreTimezone: true,
      editable: true,
      defaultView: 'month',
      height: 500,
      slotMinutes: 30,
      selectable: true,
      selectHelper: true,
    
    select: (start, end, allDay) ->
      title = $("#title")
      description = $("#description")
      hours = $("#hours")
      workorder = $("#workorder_id")
      actcode = $("#actcode_id")
      $("#dialog-form").dialog
        autoOpen: true
        height: 500
        width: 400
        modal: true
        buttons:
         "Create Labor": ->
           $.create "/events/",
             event:
               workorder_id: workorder.val(),
               actcode_id: actcode.val(),
               title: title.val(),
               description: description.val(),
               hours: hours.val()
               starts_at: "" + start,
               ends_at: "" + end,
               all_day: allDay,
               employee_id: $('#calendar').data('employeeid')
           $('#calendar').fullCalendar('refetchEvents')
           $(this).dialog "close"
    
          Cancel: ->
            $(this).dialog "close"
    
    eventSources: [{
      url: '/events',
    }],
    
    timeFormat: 'h:mm t{ - h:mm t} ',
    dragOpacity: "0.5"
    
    eventDrop: (event, dayDelta, minuteDelta, allDay, revertFunc) ->
      updateEvent(event);
    
    eventResize: (event, dayDelta, minuteDelta, revertFunc) ->
      updateEvent(event);
    
    updateEvent = (the_event) ->
      $.update "/events/" + the_event.id,
        event:
          title: the_event.title,
          starts_at: "" + the_event.start,
          ends_at: "" + the_event.end,
          description: the_event.description
    

    UPDATE3

    Some gems I'm using related to javascript:
    gem 'twitter-bootstrap-rails'
    gem 'jquery-rails'
    gem 'fullcalendar-rails'
    gem 'jquery-rest-rails'
    gem 'gmaps4rails'
    gem 'bootstrap-editable-rails'
    gem 'jquery-datatables-rails'
    gem 'jqtree-rails'
    

    UPDATE4

    我是否应该关注Chrome检查元素?

    UPDATE5

    @ abhi和Ogz向导说要删除公共资产或尝试将其放入development.rb = config.assets.debug = false。当我将该行添加到development.rb时,错误就消失了。

    现在我不确定下一步该做什么。我希望能够调试资产。

1 个答案:

答案 0 :(得分:0)

你最近有没有转向turbolinks?有一个宝石可以解决这些问题。 (jquery.turbolinks)

  

如果在使用jQuery Turbolinks后发现某些事件被多次触发,您可能已经将文档事件绑定在$(function())块中。例如,下面这个例子可能很常见,应该避免:

/* BAD: don't bind 'document' events while inside $()! */
$(function() {
 $(document).on('click', 'button', function() { ... })
});

https://github.com/kossnocorp/jquery.turbolinks#troubleshooting

但是你应该考虑通过提供更多细节和一些代码来改进你的问题。