Я использую сортировку jQuery для сортировки таблицы. см. мою структуру
<table id="sortable">
<tr class="not">
<td>Elements</td>
</tr>
<tr>
<td>I am first</td>
</tr>
<tr>
<td>I am second</td>
</tr>
<tr>
<td>I am third</td>
</tr>
</table>
мой jquery
<script>
jQuery('#sortable tbody').sortable({
update: function (event, ui) { },
cancel: '.not',
});
</script>
Здесь я могу переместить
<tr>
<td>I am first</td>
</tr>
<tr>
<td>I am second</td>
</tr>
<tr>
<td>I am third</td>
</tr>
строки до
<tr class="not"><td>Elements</td></tr>
Как я могу заблокировать это движение?
Если вы хотите заблокировать только первый элемент, если это заголовок таблицы, поместите <thead>
см. пример
<table id="sortable">
<thead>
<tr class="not"><td>Elements</td></tr>
</thead>
<tbody>
<tr><td>I am first</td></tr>
<tr><td>I am second</td></tr>
<tr><td>I am third</td></tr>
</tbody>
</table>
<script>
jQuery('#sortable tbody').sortable({
update: function (event, ui) { }
});
</script>
См. Демонстрацию: http://jsfiddle.net/arunkumarthekkoot/7hhza/
Вы можете попробовать сравнения offset.top
значения .not
и sortable
элементов в sort or stop
функцию. Исходя из результата сравнения, вы можете отменить/разрешить сортировку:
Код JS:
jQuery('#sortable tbody').sortable({
update: function (event, ui) {},
cancel: '.not',
stop: function (event, ui) {
var p = $('.not').offset().top;
var P = ui.position.top;
if (P < p) {
return false;
}
}
});
HTML:
<table id="sortable">
<tr>
<td>Elements</td>
</tr>
<tr>
<td>I am first</td>
</tr>
<tr class="not">
<td>I am second</td>
</tr>
<tr>
<td>I am third</td>
</tr>
</table>
Вы можете использовать опцию item для исключения определенных элементов. как это:
jQuery('#sortable tbody').sortable({
items: 'tr:not(.not)'
});