【问题标题】:jQuery and drop in tablejQuery并放入表格
【发布时间】:2010-09-07 10:33:25
【问题描述】:
我有以下代码。当表格为空时,需要附加到ti,但如果有行我需要insertBefore 我放置的行。但是仅在 TABLE 上检测到下降,即使我在 tr 上下降,跟踪也只显示表。
$("#mytable TABLE, #mytable TABLE").droppable({
drop: function(event, ui)
{
var target = $(event.target);
var draggable = ui.draggable;
trace(target[0].tagName) ;
}
});
【问题讨论】:
标签:
jquery
drag-and-drop
html-table
【解决方案1】:
我确信它可以被整理,但这里有一些似乎可行的方法:
function dropRow(event, ui) {
var target = $(event.target);
var draggable = ui.draggable;
var tr = $('<tr><td>' + draggable.text() + '</td></tr>');
target.before(tr);
tr.droppable({ drop: dropRow, greedy: true });
}
function dropTable(event, ui) {
var target = $(event.target);
var draggable = ui.draggable;
var tr = $('<tr><td>' + draggable.text() + '</td></tr>');
target.append(tr);
tr.droppable({ drop: dropRow, greedy: true });
}
$("#mytable").droppable({
drop: dropTable
});
This question 可能相关 - 您的部分问题是将 'drop' 事件连接到尚不存在的元素(并且 'live' 也不处理 'drop')。
【解决方案2】:
我的错,问题是 TR 是被删除的那个,所以它们在初始化时不存在,这是只有表反应的理由。
所以我在页面中的所有 TR 上初始化了 drop(2 个表),所以当第一个表中的 TR 在第二个表中被删除时,它们会在另一个 TR 被删除时做出反应。
但我需要找到一种最简洁的方法来初始化丢弃的 TR。不知道在每个新行的第二个表中重新初始化所有 TR 是否是一种好方法。