2009-11-05 2 views
11

Как проверить, подключен ли jQuery UI-плагин к элементу? Например, если я загружаю виджет .sortable, как определить его присутствие?Как проверить, подключен ли модуль jQuery UI к элементу?

Цель этого вопроса заключается в том, что мне хотелось бы переключить .sortable на элементы. С возможностью видеть, что .sortable присутствует, я мог бы затем вызвать .sortable («destroy»), чтобы удалить его.

ответ

13

Все виджеты ui присваивают свое имя истинным данным контейнера элемента. jqueryui также добавляет выражение фильтра данных.

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

Проверка того, применяется ли стиль CSS, является большим, но это немного более явным, и мне это нравится. Спасибо, Кори! – Jay

+0

Отличное решение, и я удивлен, что это заняло столько же времени, как и в Интернете, чтобы это выяснить. Я бы хотел, если бы они сделали более очевидным, что это происходит? –

1

Все виджеты пользовательского интерфейса выданы классом ui-widget. Обычно каждый виджет также добавляет класс виджетов к основному элементу. В этом случае вы должны увидеть ui-sortable, добавленный в сортируемый контейнер.

+0

Великий ответ, спасибо Кевин. – Jay

3

Если кто-то ищут для этого решения в более поздних версиях jqueryUI, имя контейнера данных о сортируемом плагине теперь uiSortable и не сортируется. Im использованием jQueryui 1.10

т.е. найти элементы и могут использовать

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

и найти элементы, которые еще не инициализирован

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

С JQuery UI 1.8, специальные селекторы are being added to Sizzle for each widget. Они представлены в форме :ui-widgetname.

Для проверки наличия сортируемого виджета на элементе, можно использовать таким образом:

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

короткий и простой –

Смежные вопросы