('#'). Диалог не является ошибкой функции после использования функции jQuery .load (). - PullRequest
1 голос
/ 02 августа 2011

У меня есть следующий код:

<?php
$this->beginWidget('zii.widgets.jui.CJuiDialog', array(
    'id'=>'mydialog',
    // additional javascript options for the dialog plugin
    'options'=>array(
        'title'=>'Confirmar',
        'resizable'=>'false',
        'autoOpen'=>false,
        'modal'=>true,      
        'buttons'=>array('Eliminar'=>'js:function(){deleteMessage();$(this).dialog("close");}',
                         'Cancelar'=>'js:function(){$(this).dialog("close");}',),
    ),
));?>
<div style="display:none">Do you confirm you want to delete the item?</div> 
<?php 
$this->endWidget('zii.widgets.jui.CJuiDialog');
?>

<input type="button" onclick="js:openDlg()" value="Open the dialog">
<script language="javascript" type="text/javascript">
    function openDlg(){
        $("#mydialog").dialog("open"); 
    }
</script>

Это работает ОТЛИЧНО, пока мне не нужно было вызвать функцию .load () jQuery. Для тестирования у меня есть кнопка, которая вызывает метод .load () (хотя предположительно его следует вызывать, когда документ готов). Если я нажму кнопку открытия диалогового окна перед нажатием этой пробной кнопки, диалоговое окно откроется правильно. Иначе, это терпит неудачу со следующей ошибкой:

$ ("# mydialog"). Диалог не является функцией $ ( "# MyDialog") диалог ( "открыто").

Пробная кнопка:

<input type="button" onclick="js:load_wall()" value="Load Messages">
function load_wall(){
        var liga = $("#liga_id").val();
        $('#div_wall_messages').load('displayMessages',{liga_id: liga}, function(){

        });

Пожалуйста, любая помощь более чем приветствуется. Эта ошибка сводит меня с ума. спасибо !!

Ответы [ 3 ]

2 голосов
/ 02 августа 2011

Что такое displayMessages?Это страница со скриптами?Это страница с другой копией jQuery?Если вы включите вторую копию jQuery, вы будете перезаписывать существующую копию - возможно, вы перезаписываете jQuery, в который загружен плагин Dialog, новым, который не имеет.

Если вы хотите загрузитьв div, и то, что у вас есть в загружаемом файле, это полная страница HTML (включая <head>, <script> s и др.), тогда вам следует загружать только фрагмент контента (id), которыйВы хотите в свою цель.Во всех случаях избегайте load() содержимого HTML, которое содержит <script>;результаты, в зависимости от обстоятельств, либо ничего, либо ничего разумного.

Кроме того, js: во всем приведенном выше коде ничего не делает и его следует опускать.

1 голос
/ 02 августа 2011

Если проблема заключается в загрузке, вероятно, вы загрузили (и перезаписали) загруженные в данный момент библиотеки, которые могут включать jQuery в ваш плагин диалога.Убедитесь, что вы загружаете чистую страницу, (всякий раз, когда я AJAX, я обычно генерирую только один <div> или <ul>, что мне нужно, а не всю веб-страницу.

Если это не удается, убедитесь, чтовключены соответствующие файлы javascript, которые включают в себя jQuery и, по-видимому, также jQuery UI.

Проверьте в сети / ресурсах вашего браузера отслеживание того, что происходит с этими файлами сценариев, и посмотрите, есть ли какие-либо другие сообщения об ошибках (возможно, 404не найден?) в файлах javascript.

0 голосов
/ 01 августа 2013

Как уже объяснялось выше, вы, вероятно, переопределите библиотеки.

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

Другой способ - вставить iframeдиалог и содержание в диалоге.Iframes обрабатываются браузером как отдельная страница со своими собственными скриптами.Таким образом, сценарии содержимого «поверх» iframe будут отделены от сценариев диалога «под» iframe.

Поскольку вы используете Yii, отметьте wiki .

...