Как заблокировать движение tr в jquery sortable?

0

Я использую сортировку 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>

Как я могу заблокировать это движение?

  • 0
    <script> jQuery ('# sortable tbody: not (". not")'). sortable ({update: function (event, ui) {}}); </ Скрипт>
Теги:
jquery-ui-sortable

3 ответа

2
Лучший ответ

Если вы хотите заблокировать только первый элемент, если это заголовок таблицы, поместите <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/

  • 0
    Это на самом деле я ищу спасибо :)
1

Вы можете попробовать сравнения 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>

Демо: http://jsfiddle.net/lotusgodkk/GCu2D/155/

  • 0
    Спасибо, это работает !!
0

Вы можете использовать опцию item для исключения определенных элементов. как это:

jQuery('#sortable tbody').sortable({
   items: 'tr:not(.not)'
});
  • 0
    Я знаю, этот код используется для исключения <tr>, но мне нужно, чтобы я не хотел перемещать другую <tr> вершину исключенного <tr>
  • 1
    Вы можете получить позицию сброса в событии сброса и, если оно будет первым, отменить действие сброса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню