gpt4 book ai didi

javascript - jquery ui 可排序垃圾箱显示和隐藏事件

转载 作者:太空宇宙 更新时间:2023-11-04 13:12:20 25 4
gpt4 key购买 nike

我有一个可以使用 jquery ui 排序的 html 表格。然后我添加了一个用作垃圾桶的表格行。出于美观原因,我只希望在用户拖动表格行时垃圾桶可见。我通过在事件事件上创建表行来执行此操作,并在停用事件中删除表行。但是我注意到,当它被拖入垃圾箱时,它不再删除该元素。我试图通过使用 settimeout 来解决此问题,以便在表格行消失之前有延迟,但这不起作用。

我还想知道我可以修复它,以及如何让它下降而不是立即弹出(Example),然后向上移动而不是消失(示例的反面)。

我有一个 JSfiddle setup here这也是表格的 html:

<table class="table" id="tableDevices">
<thead>
<tr>
<th>Name</th>
<th>Protocol</th>
<th>Systemcode</th>
<th>Unitcode</th>
<th>State</th>
<th></th>
</tr>
</thead>
<tbody class="ui-sortable">
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr></tr>
<tr style="display: table-row;"></tr>
<tr class="ui-sortable-handle" style="display: table-row;">
<td class="AllowEdit" contenteditable="true">BBQ</td>
<td class="AllowEdit" contenteditable="true">pollin</td>
<td class="AllowEdit" contenteditable="true">31</td>
<td class="AllowEdit" contenteditable="true">4</td>
<td class="AllowEdit" contenteditable="true">off</td>
<td><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></td></tr>
<tr class="ui-sortable-handle" style="display: table-row;">
<td class="AllowEdit" contenteditable="true">Server</td>
<td class="AllowEdit" contenteditable="true">pollin</td>
<td class="AllowEdit" contenteditable="true">15</td>
<td class="AllowEdit" contenteditable="true">1</td>
<td class="AllowEdit" contenteditable="true">off</td>
<td><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></td></tr>
<tr class="ui-sortable-handle" style="display: table-row;">
<td class="AllowEdit" contenteditable="true">Kitchen</td>
<td class="AllowEdit" contenteditable="true">pollin</td>
<td class="AllowEdit" contenteditable="true">31</td>
<td class="AllowEdit" contenteditable="true">1</td>
<td class="AllowEdit" contenteditable="true">off</td>
<td><span class="ui-icon ui-icon-arrowthick-2-n-s"></span></td>
</tr>
<tr style="display: table-row;"></tr>
</tbody>
</table>

这是我正在运行的 javascript

//Code to drag and drop order table
var fixHelperModified = function (e, tr) {
var $originals = tr.children();
var $helper = tr.clone();
$helper.children().each(function (index) {
$(this).width($originals.eq(index).width())
});
return $helper;
};

$("#tableDevices tbody").sortable({
activate: function (event, ui) {
$('#tableDevices > tbody > tr:first').before('<tr><td colspan="6" id="trash" class="trash">Trash</td></tr>');
}
}, {
deactivate: function (event, ui) {
setTimeout(function () {
$("#trash").remove();
}, 500);
}
}, {cancel: '[contenteditable]'}, {connectWith: '#trash'}, {helper: fixHelperModified});


$("#trash").droppable({
accept: "#tableDevices tr",
hoverClass: "ui-state-hover",
drop: function (ev, ui) {
ui.draggable.remove();
}
});

最佳答案

我认为问题与事件触发有关。因为每次都必须删除和添加元素,所以每次都必须绑定(bind)事件。您可以通过仅添加内联元素然后更改 css 属性来防止这种情况。

JSFiddle

JS

$("#tableDevices tbody").sortable({
activate: function (event, ui) {
$('#trash').css('display', 'table-row');
}
}, {
deactivate: function (event, ui) {
$("#trash").css('display', 'none');
}

CSS

#trash {
display: none;
}

HTML(tbody 的第一行)

<tr id="trash"><td colspan="6" class="trash">Trash</td></tr>

关于javascript - jquery ui 可排序垃圾箱显示和隐藏事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31711455/

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