Подтвердить что ты не робот

Как отключить сортировку с помощью jQueryUI?

Я создал список сортировки jQueryUI, и он работает очень хорошо. В какой-то момент времени я хочу отключить дальнейшую сортировку и сохранить порядок вещей, так как он не может изменить его.

Он пробовал что-то подобное:

$('.sortable').sortable('disable'); 

и это:

$('.sortable').each(function() { $(this).sortable('disable'); });

и

$('.sortable').disable(); 

и

$('.sortable').cancel(); 

и различные комбинации всего этого. Все без успеха.

Может ли кто-нибудь сказать ne Правильный путь & trade; сделать это?

Обновление: Я использую jQuery 1.3.2 и jQueryUI 1.7.2. Возможной проблемой может быть то, что у меня есть два независимых сортируемых списка на странице, поэтому у меня есть sortable1 и sortable2 классы. Я на самом деле делаю:

$('.sortable2').sortable('disable'); 

Update2: проблема заключалась в том, что я использовал .sortable вместо #sortable. Теперь все работает отлично.

4b9b3361

Ответ 1

Первый способ - это пример, приведенный в документации. Я только что протестировал его с одним из моих собственных проектов, и он отлично работает. Какие версии jQuery и jQuery UI вы используете? У меня есть 1.3.2 и 1.7.2 соответственно.

Ответ 2

$(ui.sender).sortable( "disable" )

Ответ 3

Я был в процессе отладки:

  • нажмите, чтобы сделать сортировку
  • завершение (сортировка отключена)
  • нажмите, чтобы снова сортировать
  • Решение/обходной путь: отключить опцию false в явном виде

http://plnkr.co/edit/uX6cNNiYoejYqwQicEhg?p=preview

  function sortableEnable() {
    $( "#sortable" ).sortable();
    $( "#sortable" ).sortable( "option", "disabled", false );
    // ^^^ this is required otherwise re-enabling sortable will not work!
    $( "#sortable" ).disableSelection();
    return false;
  }
  function sortableDisable() {
    $( "#sortable" ).sortable("disable");
    return false;
  }

Надеюсь, что это поможет.

Ответ 4

Спасибо Michal

Я сделал версию для списков, которые могут быть либо сортируемыми, либо редактируемыми.

Очень полезно для меня хотя бы!

    function sortableEnable() {
        $( "ul" ).sortable();
        $( "ul" ).sortable( "option", "disabled", false );
        $( "li" ).attr("contentEditable","false");
        $( "li" ).css("cursor","move");
        return false;
    }

  function sortableDisable() {
        $( "ul" ).sortable("disable");
        $( "li" ).attr("contentEditable","true");
        $( "li" ).css("cursor","default");
        return false;
    }

    $(function() {
        sortableEnable();
    });

Ответ 6

Хотя предлагаемые сообщения передо мной были полезными, они не решают, чего я пытаюсь достичь. Я хотел включить и выключить сортировку по нескольким областям и добавить возможность снова сделать контент.

Вот код, который я использовал:

function AddSortable() {

    $("ul").sortable({
        connectWith: "ul",
        disabled: false
    }).disableSelection();  

    return false;
};

function RemoveSortable(){

    $("ul").sortable({ 
        disabled: true 
    }).enableSelection();

    $("li").attr("contentEditable","true");

    return false;
}

Ответ 7

Чтобы отключить sortable(), вы можете использовать

$(".sortable").sortable("disable");

Чтобы включить/отключить нажатие кнопки с идентификатором toggleButton

$('#toggleButton').click(function() {
    //check if sortable() is enabled and change and change state accordingly
  // Getter
  var disabled = $(".sortable").sortable( "option", "disabled" );
  if (disabled) {
    $(".sortable").sortable( "enable" );
  }
  else {
    $(".sortable").sortable("disable");
  }
});