【发布时间】:2014-02-15 19:46:39
【问题描述】:
我有一个 HTML 表格,我正在使用 jQuery UI 进行排序,它工作得很好,允许我在表格中拖放行顺序。我需要防止某些行被排序。这些行有一个 class='nosort' 并且可以被选中。他们总是在底部。我正在尝试使用 sortable 的取消选项来完成此操作,但没有成功。
HTML:
<table id='sort'>
<thead>
<tr>
<td>Col 1</td>
<td>Col 2</td>
</tr>
</thead>
<tbody>
<tr>
<td class='index'>Original Row 1</td>
<td>Some Stuff</td>
</tr>
<tr>
<td class='index'>Original Row 2</td>
<td>Some Stuff</td>
</tr>
<tr>
<td class='index'>Original Row 3</td>
<td>Some Stuff</td>
</tr>
<tr class='nosort'>
<td class='index'>Original Row 4</td>
<td>Some Stuff</td>
</tr>
<tr class='nosort'>
<td class='index'>Original Row 5</td>
<td>Some Stuff</td>
</tr>
</tbody>
</table>
代码:
$("#sort tbody").sortable({
helper: fixHelperModified,
stop: updateIndex
}).disableSelection()
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;
},
updateIndex = function (e, ui) {
$("#dvQMsg").hide();
$("#dvQErr").hide();
$("#dvSaveOrder").show();
$('td.index', ui.item.parent()).each(function (i) {
$(this).html(i + 1);
});
$(".nosort").sortable("cancel");
}
;
【问题讨论】:
-
我用来防止排序的事件是“beforeStop”,只需调用 e.preventDefault();把它寄回去。
-
@Palo - 你能举个例子吗?
标签: jquery html jquery-ui html-table