2012-07-22 11 views
17

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

我々は

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

を使用する場合は、リストは再びソート可能になり、実際にそれがソート可能であるかどうかを確認していません。

+1

[jqueryウィジェットが初期化された要素を検索する]の可能な複製(http://stackoverflow.com/questions/11251765/find- jquery-widgetsの要素を初期化した要素) 'data(" fileupload ")の代わりに' data( "sortable") 'を使うだけです。 –

答えて

38

リストが既にソート可能な場合は、クラスはui-sortableである必要があります。

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

+0

クラスが添付された状態でhtmlが保存されたデータベースからページが再ロードされても、動作しません。しかし、jebbieによって提案されたメソッドは、dbからページをリロードするときに完璧です。 – arkoak

1

並べ替えを適用する場合は、ちょうど私が

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

ソート可能なウィジェットがすでに 'ui-sortable'クラスを追加しているときに不要な不要なクラスを追加するのはなぜですか? –

+1

今後のバージョンのsortableがクラス名を変更しても、このソリューションは引き続き動作します。 – Asaf

+0

自分のクラスを使用する代わりに、私は構成可能なクラスに対してチェックを行います。変更があった場合は、設定とバムだけを変更します。再び動作しません。 – jebbie

10

、次のように確認してください、あなたは要素を確認したい場合はソート可能である、そして、このようにその要素に

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

をダミークラスを追加ちょうど見つかった、データインターフェイスとそれも働いています:

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

しかし、私は言う必要があります...私は最新のjQueryバージョンを信じています、これはもう動作しません(私は最新のプロジェクトでこれらのコードインスタンスをCSSクラス検出に変更しなければなりませんでした) – jebbie

+0

ありがとうございます。 –

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

- それに要素を返しEDIT

[OK]を、クラスが信頼性があるが、私が後だったが無効ではなく、むしろ.sortableではありませんので(「破壊する」)は、すなわち(前初期の状態ですすべてのヘルパークラスを削除します)。

は、だから私のソート可能なトグル(私が作成したものである)のために:

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

jQueryのバージョンでの変更は、2012年の後にありましたので、今、あなたは書くことができます。

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

または

if ($('#sortable').is(':ui-sortable')) { 
    // sortable instance exists 
} 
関連する問題