2014-07-05 4 views
2

У меня есть следующий JQuery код:JQuery-щий сортировка - Опять включить сортируются после она была отключена

var isOk = true; 
$('#edit').click(function() { 
    if (isOk) { 
     $('table tbody').sortable({ 
      axis: 'y', 
      update: function (event, ui) { 
       var data = $(this).sortable('serialize'); 
       $.ajax({ 
        data: data, 
        type: 'POST', 
        url: 'updatePagesOrder.php', 
        success: function (msg) { //re-number the rows from 1 to n 
         $('table > tbody tr').each(function (i) { 
          $(this).attr('id', 'item-' + (i + 1)); // use $(this) as a reference to current tr object 
         }); 
        }, 
        error: function() { 
         alert("An error occurred"); 
        } 
       }); 
      } 
     }, "enable"); 
    } 
    else { 
     $("table tbody").unbind(); 
     $('table a').unbind(); 
    } 
    isOk = !isOk; 

В приведенных выше #edit кодах кнопки, на первом щелкните его вызывают строки таблицы, чтобы быть и второй щелчок отключает параметр сортировки.

Я хочу, чтобы на третьем щелчке строки будут отсортированы снова. Я пробовал код выше, но он не работал.

Почему? и как я могу это исправить? Благодаря!

+0

Не знаю, почему это было вниз проголосовали ... Большой вопрос – Fergus

ответ

4

Инициализировать виджет вне обработчика щелчка:

$('table tbody').sortable({ 
    disabled: true, // Initially disabled 
    axis: 'y', 
    update: function (event, ui) { 
     var data = $(this).sortable('serialize'); 
     $.ajax({ 
      data: data, 
      type: 'POST', 
      url: 'updatePagesOrder.php', 
      success: function (msg) { //re-number the rows from 1 to n 
       $('table > tbody tr').each(function (i) { 
        $(this).attr('id', 'item-' + (i + 1)); // use $(this) as a reference to current tr object 
       }); 
      }, 
      error: function() { 
       alert("An error occurred"); 
      } 
     }); 
    } 
}); 

Тогда просто переключите «заблокировано» вариант, когда вы нажмете на кнопку.

$("#edit").click(function() { 
    var table = $('table tbody'); 
    table.sortable('option', 'disabled', !table.sortable('option', 'disabled')); 
}); 
+0

Спасибо, но я получил сообщение об ошибке: "не определено не является функцией" –

+0

Какая линия получает эту ошибку? – Barmar

+0

Загрузили ли вы библиотеку jQuery-UI? – Barmar