jQuery sortable не является функцией

Я пытаюсь сделать упорядоченный список элементов, которые можно щелкнуть и перетащить с помощью плагина Sortable jQuery UI версии 1.8.16. Тем не менее, я продолжаю получать сообщение об ошибке $("#ol-id ol").sortable is not a function, где 'ol-id' является идентификатором списка. Мой код выглядит следующим образом:

//Sorting stuff
if($("#li-id li").size()>1) {
    $("#ol-id ol").sortable({
        revert:         true,
        axis:           'y',
        containment:    'parent',
        cursor:         'move',
        handle:         'div.link_div',
        smooth:         false,
        opacity:        0.7,
        tolerance:      'pointer',
        start: function(){
            $("#ol-id").removeClass("bottom_dragged");
        },
        update: function(){
            $("#ol-id ol").sortable({disabled : true});
            $("#saving_indicator").html("saving...")
            $("#saving_indicator").show();
                            //do other stuff...
        }
    })
}

Как ни странно, ошибка отображается в Firebug как строка с update: function(){.

Я проверил, что эта функция вызывается после загрузки страницы и загрузки библиотеки пользовательского интерфейса jQuery. Я включаю в заголовок как jquery-1.6.2.min.js, так и jquery-ui-1.8.16.custom.min.js. Кроме того, я проверил, что все имена идентификаторов верны и соответствуют их аналогам в HTML.

Итак, если проблема не в отсутствующих ресурсах, то в чем проблема?

РЕДАКТИРОВАТЬ: вот мой заголовок HTML:

<link href="/_css/styles.css?mod=1317745564" type="text/css" rel="stylesheet">
<link href="/_javascript/qtip/jquery.qtip.min.css?mod=1315947301" type="text/css" rel="stylesheet">
<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js">
<script type="text/javascript" async="" src="http://www.google-analytics.com/ga.js">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript">
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js">
<link rel="stylesheet" type="text/css" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/start/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/le-frog/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js" type="text/javascript">
<script src="/_javascript/sets.js?mod=1320080042" type="text/javascript"> //Sorting stuff code is here
<script type="text/javascript" src="http://dev.selfcheck.vudat.msu.edu/_javascript/jquery.jsonp.js">
<script type="text/javascript" src="http://dev.selfcheck.vudat.msu.edu/_javascript/jquery.form.js">
<script type="text/javascript" src="http://dev.selfcheck.vudat.msu.edu/_javascript/qtip/jquery.qtip.min.js">
<link href="/_css/ui/ui.core.css?mod=1315947279" type="text/css" rel="stylesheet">
<link href="/_css/ui/ui.theme.css?mod=1315947280" type="text/css" rel="stylesheet">

person CodeRedd    schedule 31.10.2011    source источник
comment
Вы включили jQuery UI после jQuery?   -  person Rob W    schedule 31.10.2011
comment
Попробуйте $(this).sortable({disabled : true}); внутри update, просто для проверки.   -  person yoda    schedule 31.10.2011
comment
Я проверил, что пользовательский интерфейс jQuery загружается после jQuery, и проблема все еще здесь. Кроме того, использование «этого» вместо правильного идентификатора не устраняет ошибку. Спасибо за предложения, хотя!   -  person CodeRedd    schedule 31.10.2011
comment
Вы включаете одни и те же библиотеки три раза. Я бы переработал этот заголовок...   -  person Blender    schedule 31.10.2011
comment
Да, я знаю, что он раздут - это определенно в моем списке дел...   -  person CodeRedd    schedule 31.10.2011


Ответы (5)


jQuery UI и jQuery должны быть загружены в определенном порядке:

<script src="jquery.js">...
<script src="jquery-ui.js">...

Убедитесь, что вы включаете jQuery UI после jQuery.

person Blender    schedule 31.10.2011
comment
Я проверил, что пользовательский интерфейс JQuery загружается после JQuery. К сожалению, проблема все еще присутствует. - person CodeRedd; 31.10.2011
comment
Можете ли вы опубликовать свой HTML <head>? - person Blender; 31.10.2011
comment
@caffeineshots вы можете опубликовать решение - person Gopinath Perumal; 09.03.2015
comment
@GopinathPerumal в моем случае это была глупая ошибка, я сначала загрузил jquery-ui.js, и это неправильно, чтобы заставить jquery-ui работать, jquery.js должен быть загружен первым. - person CaffeineShots; 11.03.2015

Так что не уверен, что это кому-нибудь поможет, но я столкнулся с похожей ситуацией, которую смог решить. Таким образом, это, кажется, происходит, когда либо

а) неправильный порядок загрузки jQuery-ui и jQuery.

б) jQuery включается более одного раза или включаются разные версии.

Вариант «b» произошел со мной, потому что я использовал шаблон начальной загрузки, где jQuery включен в нижнюю часть документа, что, конечно, является лучшей практикой, в то время как код, который я тестировал, добавлял другую версию jQuery вверху документа. страница.

Я вижу, что код в этом вопросе выглядит так, как будто он содержит несколько дубликатов, поэтому я бы предложил для начала очистить его.

person IonicBurger    schedule 02.08.2015

У меня была такая же проблема, потому что в нижней части страницы был включен другой файл js, в котором были некоторые функции jQuery. Когда я переместил это в начало страницы, выше моих включений jQuery и jQuery-UI все работает отлично.

person Eric Antoine Scuccimarra    schedule 17.01.2017

Моя проблема заключалась в том, что я использовал jQuery(...).sortable() вместо $(...).sortable()

Не уверен, почему это имело значение, но изменение его на $ исправило это.

person Brett Pennings    schedule 08.12.2016

я нашел новое решение, просто отредактируйте файл acf.php в строке номер 551

Старый

 'deps'      => array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'underscore', 'select2'),

новый

 'deps'      => array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'jquery-ui-sortable', 'underscore', 'select2'),

Я только что добавил jquery-ui-sortable в массив, надеюсь, помог кому-то, спасибо.

person Suresh Suthar    schedule 31.03.2017