【问题标题】:jquery sortable refresh => what is the correct syntax in coffeescript?jquery sortable refresh => coffeescript 中的正确语法是什么?
【发布时间】:2011-11-03 03:31:12
【问题描述】:

我正在尝试在我的咖啡脚本代码中应用“刷新”触发器,但我没有找到正确的语法:

在标准 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 中加载,然后它就不再工作了。这就是我要实现刷新方法的原因。如果我理解正确,它解决了这个问题

谢谢!

【问题讨论】:

  • 您的问题到底是什么?当我将您的代码应用到咖啡编译器时,我得到了我期望的 Javascript……sortable 下方的所有内容都是具有您指定选项的对象。什么不工作?
  • 我的问题是在Ajax中加载html时它不起作用。我更新了帖子以提供有关代码的更多信息。

标签: jquery refresh coffeescript jquery-ui-sortable


【解决方案1】:

这是完全有效的 CoffeeScript:

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

原样

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

【讨论】:

  • 当我以第一种方式执行时,我收到错误消息“$(".milestone_chain").sortable("refresh") 不是函数”,当我执行第二种方式时,什么都没有发生……谢谢!
  • 您的代码中还有其他问题。您是否混合使用制表符和空格进行缩进?这是在哪里运行的?
  • 它是在内网运行的,但是我在上面的代码中贴出了html代码。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    尝试为更多的小部分设计代码,例如向下移动回调并尝试在此之后查找错误。 在咖啡中,ajax 不需要那么长的队伍。尝试改进您的代码,使用字符串插值。您的代码将如下所示:

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

    【讨论】:

    • 实际上,只要我不在 Ajax 中加载列表,回调就可以正常工作。所以,我看不出把它往下移会有什么帮助。问题似乎出在“刷新”语句中,但我只是收到一条错误消息,告诉我“刷新不是函数”。我对 javascript/coffeescript 很陌生,我不太了解这个 refresh 语句应该如何工作。我很困惑...
    • 在萤火虫中点击它。你会看到在你编译的 JS 代码(不是咖啡)中真正发生了什么。我认为您可能对“this”指针有疑问。这可能与您的预期不同。
    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2012-10-15
    • 2014-04-19
    • 2018-11-14
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多