"> #-6ren">
gpt4 book ai didi

javascript - 如何拖放表格?

转载 作者:行者123 更新时间:2023-11-28 00:01:26 25 4
gpt4 key购买 nike

我关注了这个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com