javascript - 如何拖放表格?

标签 javascript jquery ruby-on-rails ruby jquery-ui

我关注了这个Ryan Bates tutorial .

太棒了。

我让它可以与列表一起使用,但我一直在尝试使其与表格一起使用,更具体地说是在部分中呈现的表格。

<table id="habits" data-update-url="<%= sort_habits_url %>">
  <% @habits.each do |habit| %>
    <tbody id="habit_<%= habit.id %>">
      # 2 tr's & 7 td's
    </tbody>
  <% end %>
</table>

对于上述版本,迭代会倍增表格,因为我正在使用 <% rendered @habits %> 从主页渲染此部分内容。所以我不必包含行 <% @habits.each do |habit| %> .

所以我尝试了这个:

<table id="habits" data-update-url="<%= sort_habits_url %>">
  <tbody id="habit_<%= habit.id %>">
    # 2 tr's & 7 td's
  </tbody>
</table>

但是这样只能拖动第一个表格。对于第一个示例代码,只能拖放表的第一次迭代。

habit-sort.js.coffee

jQuery ->
  $('#habits').sortable(
    axis: 'y'
    update: ->
      $.post($(this).data('update-url'), $(this).sortable('serialize'))
  );

最佳答案

如果尝试处理多个 DOM,则不能使用 DOM ID。所以你需要按类替换 id。

使用多个 tbody 并对每个 tbody 内的 TR 进行排序:http://jsfiddle.net/aron_aron/1jjhdtj2/2/

此外,如果您绑定(bind) <table id="habits" ,可排序的内容将是整个 tbody html 内容。

更新

让我尝试对可排序的工作原理做一个简单的解释。

当您调用$( "#item" ).sortable()时,您将能够对 #item 根目录中的每个子项进行排序(更改位置)。

这是什么意思?

如果您有以下 html:

<div class="sortable_tables">
    <table class="sortable_bodys">
        <tbody class="sortable_trs">
          <tr class="sortable_tds">
              <td>ID 1</td>
              <td>Item Name 1</td>
              <td>Action</td>
          </tr>
          <tr>

所以您可以调用.sortable()在任何级别,取决于预期的行为。

例如,如果您想对整个表进行排序,只需调用 $( ".sortable_tables" ).sortable() ,因此您将能够更改在 <div class="sortable_tables"> 内创建的任何 html 元素的位置

但是假设您想要对表中的行进行排序。所以,要对TR进行排序,需要调用父级html .select() 。 TR 的父级是 tbody,因此 $( ".sortable_trs" ).sortable()您将能够使用 sortable_trs 对每个 tbody 内的 TR 进行排序类

关于javascript - 如何拖放表格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31764285/

相关文章:

javascript - 当嵌套在 Kendo 网格中时如何重新加载 Kendo TabStrip 选项卡

javascript - 如何用 jQuery 替换 innerHTML?

javascript - 从手机上的 OneDrive 中选择一个文件 - 移动网站

javascript - 清理内存泄漏

javascript - Heroku 中的错误 : ENOENT, stat '/app/public/views/index.html'

javascript - 如何禁用日期选择器上的过去日期

jquery - 单击按钮更改元素 CSS 样式

ruby-on-rails - Bundler 找不到 gem "bundler": 的兼容版本

ruby-on-rails - 在 Rails 4.2 中使用 Arel 的 WHERE 子句中的 OR 运算符

ruby-on-rails - Rails - Elastic Beanstalk nginx/error.log