Как проверить, подключен ли jQuery UI-плагин к элементу?
Как проверить, подключен ли jQuery UI-плагин к элементу? Например, если я загружаю виджет .sortable, как определить его присутствие?
Цель этого вопроса заключается в том, что мне хотелось бы переключить .sortable на элементы. С возможностью видеть, что .sortable присутствует, я мог бы затем вызвать .sortable( "destroy" ), чтобы удалить его.
Ответы
Ответ 1
Все виджеты ui присоединяют свое имя как true к данным контейнера элемента. jqueryui также добавляет выражение фильтра данных.
var $elem = $('div.sortable-container:data(sortable)');
if ($elem.length){
// $elem contains list of elements that have sortable widget attached
}
Ответ 2
Так как jQuery UI 1.8, специальные селекторы добавляются в Sizzle для каждого виджета. Они находятся в форме :ui-widgetname
.
Чтобы проверить наличие сортируемого виджета на элементе, вы можете использовать:
if(element.is(':ui-sortable')) {
element.sortable('destroy');
}
Ответ 3
Если кто-то ищет это решение в более поздних версиях jqueryUI, имя контейнера данных сортируемого плагина теперь является uiSortable и не сортируется. Im с использованием jQueryui 1.10
Чтобы найти элементы u, можно использовать
var $elem = $('#sortable-container:data(uiSortable)');
и найти элементы, которые еще не инициализированы
var $elem = $('#sortable-container:not(:data(uiSortable))');
Ответ 4
Все виджеты пользовательского интерфейса имеют класс ui-widget
. Обычно каждый виджет также добавляет класс виджетов к основному элементу. В этом случае вы должны увидеть ui-sortable
, добавленный в сортируемый контейнер.
Ответ 5
Просто вызовите экземпляр sorttable, если return undefined, то не загружен
<pre>
if (typeof $("ul.sortable").sortable('instance') != 'undefined') {
//$.ui.sortable is loaded and called
} else {
//call sortable
}
</pre>