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

Как проверить, сортируется ли список?

Как проверить, отсортирован ли конкретный список? Как $('#list').is(':sortable')...?

Если мы будем использовать

if ($('#list').sortable()) 

тогда список будет снова отсортирован и не будет проверяться, действительно ли он сортируется.

4b9b3361

Ответ 1

Если список уже сортируется, тогда он должен иметь класс ui-sortable.

Вы можете использовать if ($('#list').hasClass('ui-sortable')), чтобы проверить его.

Ответ 2

Я только что узнал, с интерфейсом данных он тоже работает:

if ($( '#sortable' ).data( 'sortable' )) {
    // sortable instance exists
}

Ответ 3

После версии 2012 года произошла смена версии jQuery, поэтому теперь вы можете написать:

if ($( '#sortable' ).data( 'ui-sortable' )) {
    // sortable instance exists
}

или

if ($( '#sortable' ).is(':ui-sortable')) {
    // sortable instance exists
}

Ответ 4

При применении Сортировки просто добавьте фиктивный класс к этому элементу, как это,

$( "#sortable" ).sortable();
$( "#sortable" ).addClass("antguider");

Затем, если вы хотите проверить, что элемент сортируется, тогда проверьте, как это,

if($( "#sortable" ).hasClass("antguider")){
    alert("Already Sort Applied");
}

Ответ 5

Я нашел в Safari (возможно, другие) классы ненадежны. "ui-sortable" остается на любом элементе, который был сделан сортируемым, даже если вы его отключили, что приводит к использованию классов "ui-sortable ui-sortable-disabled".

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

if ($(this).hasClass("ui-sortable")) {
  $(this).removeClass("ui-sortable");
  $(this).sortable({ disabled: true });
}
else {
  $(this).addClass("ui-sortable");
  $(this).sortable({ disabled: false });
}

- EDIT

Хорошо, поэтому классы надежны, но то, что мне было после, не отключено, а скорее .sortable( "destroy" ), который возвращает элемент к нему до инициализации (т.е. удаляет все вспомогательные классы).

Итак, для моего сортируемого переключения (именно это я и создаю):

if ($(this).hasClass("ui-sortable")) $(this).sortable("destroy");
else $(this).sortable();

Ответ 6

Вы можете проверить мой ответ здесь fooobar.com/info/463026/...

Просто вызовите экземпляр sorttable, если return undefined, то не загружен

if (typeof $("ul.sortable").sortable('instance') != 'undefined') {
    //$.ui.sortable is loaded and called
} else {
    //call sortable
}