2009-11-05 16 views
11

jQuery UIプラグインが要素にアタッチされているかどうかを確認するにはどうすればよいですか?たとえば、.sortableウィジェットをロードすると、その存在をどのように判断できますか?jQuery UIプラグインが要素にアタッチされているかどうかを確認するにはどうすればいいですか?

この質問の背後にある目的は、要素の並べ替えを可能にすることです。 .sortableが存在することを確認することで、.sortable( 'destroy')を呼び出して削除することができます。

答えて

13

すべてのUIウィジェットは、要素のコンテナデータにtrueという名前を付けます。 jqueryuiはデータフィルタ式も追加します。

var $elem = $('div.sortable-container:data(sortable)'); 
if ($elem.length){ 
    // $elem contains list of elements that have sortable widget attached 
} 
+1

CSSスタイルが適用されているかどうかを確認するのは素晴らしいですが、これはもう少し明示的です。ありがとうCorey! – Jay

+0

偉大な解決策、そして私はそれを見つけるためにそれがしたように多くのウェブを精査するのに驚いた。これが起こったことがより明白になるだろうが、私は持っているだろうか? –

1

すべてのUIウィジェットには、クラスui-widgetが与えられています。通常、各ウィジェットはウィジェットクラスをメインエレメントに追加します。この場合、ソート可能なコンテナにui-sortableが追加されているはずです。

+0

グレート答え、ありがとうケビンを。 – Jay

3

誰もが後jqueryUIのバージョンでは、この解決策を探している場合は、ソート可能なプラグインのデータコンテナの名前がソート可能になりましuiSortableありません。 uは

var $elem = $('#sortable-container:data(uiSortable)'); 

を使用することができますし、まだjQueryのUI 1.8、特殊なセレクタare being added to Sizzle for each widgetので

var $elem = $('#sortable-container:not(:data(uiSortable))'); 
5

を初期化されていない要素を見つけるために、要素を見つけるためにjQueryui 1.10

すなわちを使用してイム。これらは:ui-widgetnameの形式です。

要素のソート可能なウィジェットの存在をチェックするために、あなたはそのため使用することができます。

if(element.is(':ui-sortable')) { 
    element.sortable('destroy'); 
} 
+0

簡潔でシンプル –

関連する問題