我有一个带有jquery-ui标签的页面,每个标签都包含一个表格。我已将标签设置为可放置,并且表格可以排序。
我希望能够从活动选项卡中的表格中拖出一行,将其放在另一个选项卡上,并将该行附加到该选项卡中包含的表格。
这是我的JS:
$("#tabs").tabs();
$("tbody").sortable({
items: "> tr:not(:first)",
appendTo: "parent",
helper: "clone"
}).disableSelection();
$("#tabs ul li a").droppable({
hoverClass: "drophover",
tolerance: "pointer",
drop: function(e, ui) {
var tabdiv = $(this).attr("href");
$(tabdiv + " table tr:last").after(ui.draggable);
ui.draggable.remove();
}
});
正如您在此JSFiddle中看到的那样,这些行是可拖动的,但是将它们放在另一个选项卡上并不会将其附加到其中的表中。
问题似乎是我尝试使用ui.draggable jquery元素在该行的表的行的最后一行之后追加:
$(tabdiv + " table tr:last").after(ui.draggable);
相反,如果我自己使用<tr>
标记构建行并使用ui.draggable的html,如下所示:
$(tabdiv + " table tr:last").after("<tr>" + ui.draggable.html() + "</tr>");
然后按照预期的方式工作,如此分叉JSFiddle。
这样做的问题是我丢失了附加到原始行的任何类或数据信息。
有人可以直接告诉我如何追加被拖动的行元素吗? (顺便说一下,我是jquery的新手,所以如果事实证明这是一个基本的话,我很抱歉。)
答案 0 :(得分:2)
您可以使用clone()
方法附加当前元素的克隆,包括数据和事件处理程序,如下所示:
$("#tabs").tabs();
$("tbody").sortable({
items: "> tr:not(:first)",
appendTo: "parent",
helper: "clone"
}).disableSelection();
$("#tabs ul li a").droppable({
hoverClass: "drophover",
tolerance: "pointer",
drop: function (e, ui) {
var tabdiv = $(this).attr("href");
$(tabdiv + " table").append(ui.draggable.clone(true).show());
ui.draggable.remove();
}
});
table {
border-collapse:collapse;
}
table tr td {
border: 1px solid red;
padding:2px 15px 2px 15px;
width:50px;
}
#tabs ul li.drophover {
color:green;
}
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<div id="tabs">
<ul>
<li><a href="#current"><span>Current</span></a>
</li>
<li><a href="#archive"><span>Archive</span></a>
</li>
<li><a href="#future"><span>Future</span></a>
</li>
</ul>
<div id="current">
<div id="table1">
<table>
<tbody>
<tr>
<td>COL0</td>
<td>COL1</td>
<td>COL2</td>
</tr>
<tr>
<td>c00</td>
<td>c01</td>
<td>c02</td>
</tr>
<tr>
<td>c10</td>
<td>c11</td>
<td>c12</td>
</tr>
<tr>
<td>c20</td>
<td>c21</td>
<td>c22</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="archive">
<div id="table2">
<table>
<tbody>
<tr>
<td>COL0</td>
<td>COL1</td>
<td>COL2</td>
</tr>
<tr>
<td>a00</td>
<td>a01</td>
<td>a02</td>
</tr>
<tr>
<td>a10</td>
<td>a11</td>
<td>a12</td>
</tr>
<tr>
<td>a20</td>
<td>a21</td>
<td>a22</td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="future">
<div id="table3">
<table>
<tbody>
<tr>
<td>COL0</td>
<td>COL1</td>
<td>COL2</td>
</tr>
<tr>
<td>f00</td>
<td>f01</td>
<td>f02</td>
</tr>
<tr>
<td>f10</td>
<td>f11</td>
<td>f12</td>
</tr>
<tr>
<td>f20</td>
<td>f21</td>
<td>f22</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>