在 ie8 上,我的可排序列表一切正常。但是,我在 ie7 上遇到了问题。
我的页面为每个员工设置了一个表格。有一个需要分配的工作列表,我将这些工作行拖放到员工表中。
起初,我遇到了无法放入已经为空的员工表的问题,但我通过在每个表中使用 .dontinclude 行的组合并添加接收函数(见下文)解决了这个问题:
jQuery_1_9_1(function() {
jQuery_1_9_1('[id$="' + tname + '"] ').sortable({
items: "tr:not(.dontinclude)",
connectWith: ".connectedSortable ",
receive: function(ev, ui) {
//debugger;
ui.item.parent().find('tbody').append(ui.item);
}
}).disableSelection();
});
我在创建表时添加了 .dontinclude 行(它们是动态构建的,而不是声明的),这意味着它是那里的第一行。添加前
:not(.dontinclude)
这些行不会添加到空表中。添加那行之后,它们会添加到表格中,但是它们会添加到 tbody 标记之后,这没有用。添加接收函数指定接收后添加的位置,这意味着元素现在出现在 tbody 中。
所以,在 ie8 中一切正常,直到我发现有些用户会在 ie7 上。一切都很顺利,直到我不小心在拖放过程中放开了一行,但没有超过我的一个可排序表。结果就彻底消失了。我检查了 DOM 页面,这些行再次添加到 tbody之外(可能导致它们在 ie7 上消失)。如果我在接收函数中放置一个调试器,我发现在这种情况下没有调用该函数 - 只有在我在可排序表上时才会调用它。
所以我认为我需要找到将项目放在可排序区域之外时调用的行为,并可能覆盖它。
这可能吗?也许与jquery droppable有关?