jquery sortable refresh => coffeescript中的正确语法是什么?

时间:2011-10-26 23:30:14

标签: jquery refresh coffeescript jquery-ui-sortable

我正在尝试在我的coffeescript代码中应用“刷新”触发器,但我找不到正确的语法:

在标准jquery中,它将是:$('。milestone_chain')。sortable('refresh')

在coffeescript中会有什么,知道这是我的代码:

  $('.milestone_chain').sortable
    axis: 'y'
    containment: 'parent'
    cursor: 'move'
    tolerance: 'pointer'
    update: (event,ui)->
        $('li > a > div > span.number').each (i, element)  =>
            $(element).html i+1
        $.ajax($(this).attr('data-update-url') + '/' + ui.item.attr('id') + '/reorder/' + (ui.item.index() + '.js'))

html如下:

   <ul class="milestone_chain" data-update-url="projectmilestones">
      <% projectcapstone.projectmilestones.rank(:rank).includes(:projectdepartment).each.with_index do |projectmilestone, i|  %>


              <li class="milestone_<%=projectmilestone.projectdepartment.ranking%>" id="<%=projectmilestone.id%>">
                <div class="chainpie"><%= percent_pie(projectmilestone.status)%></div>
                <div class="milestone<%=projectmilestone.projectdepartment.ranking%>"><%= link_to content_tag(:span, i+1, :class => "number"), projects_projectmilestone_path(projectmilestone) %></div>
                <div class="milestonenum">
                  <%= link_to projectmilestone.name, projects_projectmilestone_path(projectmilestone) %>
                  <b class="notch"></b>
                </div>
              </li>


      <% end %>
   </ul>

运作良好。问题是代码有时需要在Ajax中加载,然后它就不再起作用了。这就是我想要实现刷新方法的原因。如果我理解正确,它会解决这个问题

谢谢!

3 个答案:

答案 0 :(得分:1)

这是完全有效的CoffeeScript:

$('.milestone_chain').sortable('refresh')

原样

$('.milestone_chain').sortable 'refresh'

答案 1 :(得分:0)

答案是,刷新不应该在上面的问题中被触发,而是在重新加载Ajax代码块之后,作为加载此代码的ajax函数的一部分。

对于javascript专业人士来说应该是显而易见的,但不适合像我这样的新手......谢谢

答案 2 :(得分:-1)

尝试将代码分配给更多小部件,例如向下移动回调并尝试在此之后找到错误。 在咖啡中,你不需要这么长的时间来换取ajax。尝试改进代码,使用字符串插值。您的代码将如下所示:

$.ajax "#{$(this).attr 'data-update-url'}/#{ui.item.attr 'id'}/reorder/#{ui.item.index()}.js"