jQueryUI - необработанное исключение: невозможно вызвать методы

Я очень новичок в jQuery и пытаюсь запустить довольно простое диалоговое окно jQueryUI в моем приложении PHP. В консоли Firebug я получаю ошибку:

uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'open'

Вот мой код:

$(function() {
    $( "#dialog" ).dialog({
        autoOpen: false,
        show: "blind",
        hide: "explode"
    });

    $( "#opener" ).live('click',function() {
        $( "#dialog" ).dialog( "open" );
        return false;
    });
});

Я немного погуглил по ошибке и немного не нашел, кроме этогоjquery.ui.js генерирует ошибку с:

if ( isMethodCall ) {
    this.each(function() {
        var instance = $.data( this, name );
        if ( !instance ) {
            throw "cannot call methods on " + name + " prior to initialization; " +
"attempted to call method '" + options + "'";
        }
...

Есть идеи? Я ценю любую помощь в том, что это сообщение об ошибке и как ее устранить.

ОБНОВИТЬ: Я пытался закомментировать параметры показа / скрытия, и это не оказало никакого влияния на мою проблему. Ниже приведен HTML-код:

 <div class="demo">

    <div id="dialog" title="Basic dialog">
        <p>This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
    </div>

    <button id="opener">Open Dialog</button>

</div><!-- End demo -->

Этот HTML-код включен в файл PHP, который включен в другой файл PHP.

 themerlinproject30 сент. 2010 г., 07:09
Привет, Томас, я удалил параметры показа / скрытия (без эффекта) и вставил свой HTML-код выше, спасибо
 user180540407 нояб. 2012 г., 08:51
Вызов помощника автозаполнения ASP.NET MVC перед загрузкой JS-файла JqueryUI также приводит к этой ошибке.
 Thomas30 сент. 2010 г., 07:19
Мне нужно идти на работу, так что я буду молчать около часа.
 themerlinproject30 сент. 2010 г., 07:12
Я думаю, что это как-то связано с моим последним предложением «HTML включен в файл PHP, который включен в другой файл PHP». У меня были проблемы с jQuery и PHP-включениями, и в результате я начал использовать live (), чтобы сделать функции доступными для будущего содержимого ajax (такого как этот div). Я не знаю, почему это не работает здесь.
 Thomas30 сент. 2010 г., 07:17
Хм, это прекрасно работает для меня (включая опции показать / скрыть). Возможно ли, что на вашей странице есть другой JS, который выдает ошибку, которая в свою очередь запрещает правильную инициализацию? Какой браузер вы используете? Кроме того, вы используете jQuery 1.4.2 и jqueryui 1.8.5?
 Thomas30 сент. 2010 г., 07:03
Похоже, jQuery-UI считает, что вы не инициализировали диалог до вызова его метода open. Я бы удалил несколько экзотических опций для отображения и скрытия, которые вы использовали, чтобы сузить, если это проблема. Также убедитесь, что у вас есть элемент с идентификатором 'dialog' в вашей разметке. Если это не поможет, вам нужно предоставить фактическую разметку, которую вы используете, чтобы у нас была возможность отладки.

Ответы на вопрос(5)

верно?). Поэтому я пошел в main.js и изменил эту строку:

$(function () {

к этому:

jQuery(function ($) {
 John Linhart30 янв. 2014 г., 15:30
@AalexGabi, я уже не помню, но любой файл JS jQuery не должен начинаться с $, когда вы используете Mootools и jQuery вместе. Вы должны указать, что вы действительно имеете в виду $ как объект jQuery.
 Aalex Gabi27 янв. 2014 г., 16:46
Какой main.js вы модифицировали?

Я получаю ту же ошибку. Это исправило это для меня, взято изhttp://forum.jquery.com/topic/jquery-ui-model-dialog-close

$(".ui-dialog-content").dialog().dialog("close");
Решение Вопроса

это было связано с тем, что я помещал диалоговое окно DIV в файл PHP, который еще не был загружен во время загрузки моего JS. Поэтому я переместил DIV для диалогового окна на более высокую страницу, и теперь кнопка работает на любой странице моего приложения. Я надеюсь, что это помогает кому-то еще.

 gotqn11 янв. 2013 г., 08:49
Со мной происходит та же проблема, но при вызове функции «удалить» (это вызывает метод «уничтожить». Вы подходите к этой проблеме, я исправил ее, добавив $ (document) .ready (function () {...}) ; вокруг "убрать" звонок.
 JasCav30 сент. 2010 г., 16:30
@ user410341 - Рад, что ты понял это (и рад, что смог помочь с другой проблемой). Если вы хотите, вы можете принять свой собственный ответ на этот вопрос, чтобы помочь людям в будущем быстро найти ответы. :-)

jQuery UI - v1.9.2, и у меня есть только:

$this.sortable("destroy");

и я получаю:

Uncaught Error: невозможно вызвать методы для сортировки до инициализации; попытался вызвать метод 'уничтожить'

И я исправил, когда добавить проверку:

if ($this.data( "ui-sortable" )) 
{ $this.sortable("destroy"); }
 Pardeep Jain20 июн. 2017 г., 08:31
я боролся с другой ошибкой спасибо за подсказку

и проблема была в порядке кода! Вы должны, но ваш JavaScript после HTML-кода :).

Ваш ответ на вопрос