2009-11-05 14 views
11

¿Cómo puedo verificar si un plugin jQuery UI está conectado a un elemento? Por ejemplo, si cargo el widget .sortable, ¿cómo se puede determinar su presencia?¿Cómo verificar si un complemento jQuery UI está conectado a un elemento?

El propósito de esta pregunta es que me gustaría la capacidad de alternar .sortable en los elementos. Con la capacidad de ver que .sortable está presente, podría llamar a .sortable ('destroy') para eliminarlo.

Respuesta

13

Todos los widgets de ui asocian su nombre como verdadero a los datos del contenedor del elemento. jqueryui también agrega una expresión de filtro de datos.

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

Comprobar si se aplica un estilo CSS es excelente, pero esto es un poco más explícito, y me gusta. Gracias Corey! – Jay

+0

Una gran solución, y me sorprende que se haya necesitado tanta exploración de la web como lo hizo, para descubrirlo. Me hubiera gustado que ellos harían más obvio que esto ocurre? –

1

Todos los widgets de UI tienen la clase ui-widget. Normalmente, cada widget también agrega la clase de widget al elemento principal. En este caso, debería ver ui-sortable agregado al contenedor clasificable.

+0

Gran respuesta, gracias a Kevin. – Jay

3

Si alguien está buscando esta solución en versiones posteriores jQueryUI, el nombre del contenedor de datos de plug-in se puede ordenar ahora es uiSortable y no puede ordenar. Im usando jQueryUI 1.10

es decir para encontrar elementos de U puede utilizar

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

y encontrar elementos que todavía no se inicializan

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

Desde jQuery UI 1.8, selectores especiales are being added to Sizzle for each widget. Estos son en forma de :ui-widgetname.

para comprobar la presencia de un widget se puede ordenar en un elemento, se puede utilizar, por lo tanto:

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

corto y simple –

Cuestiones relacionadas