24

特定のリストがソート可能かどうかを確認するには? のように$('#list').is(':sortable')...?

使用する場合

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

その後、リストは再びソート可能になり、実際にソート可能かどうかはチェックされません。

4

7 に答える 7

46

リストがすでにソート可能である場合は、 class が必要ui-sortableです。

を使用if ($('#list').hasClass('ui-sortable'))して確認できます。

于 2012-07-22T11:37:50.967 に答える
11

私は、データインターフェイスでも機能していることを知りました:

if ($( '#sortable' ).data( 'sortable' )) {
    // sortable instance exists
}
于 2012-10-21T00:27:31.043 に答える
2

私は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 });
}

- 編集

わかりましたので、クラスは信頼できますが、私が求めていたのは無効ではなく、要素を初期化前の状態に戻す (つまり、すべてのヘルパー クラスを削除する) .sortable("destroy") です。

したがって、ソート可能なトグル(これは私が作成していたものです)の場合:

if ($(this).hasClass("ui-sortable")) $(this).sortable("destroy");
else $(this).sortable();
于 2013-11-21T16:17:39.287 に答える
2

ソートを適用するときは、このようにその要素にダミー クラスを追加するだけです。

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

次に、要素がソート可能であることを確認したい場合は、次のように確認します。

if($( "#sortable" ).hasClass("antguider")){
    alert("Already Sort Applied");
}
于 2012-07-22T11:41:20.453 に答える
0

以下も使用できます。

Sortable.get(element)

https://github.com/SortableJS/Sortable#sortablegetelementhtmlelementsortable

undefinedソート可能なインスタンスがアタッチされていない場合に解決されます。

于 2020-05-19T21:42:35.743 に答える