Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Jquery ui не открывается диалог (https://javascript.ru/forum/jquery/22418-jquery-ui-ne-otkryvaetsya-dialog.html)

DuMBaSSn1 18.10.2011 22:01

Jquery ui не открывается диалог
 
Что то непонятное с jquery ui.

Вот часть кода:

<script>
$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    buttons: { 
        'Ok': function() {  
            $('#dialog').dialog("destroy");   // кнопки не работают
        },  
        'Cancel': function() {  
            $('#dialog').dialog('close');   // кнопки не работают
        }  
    }
        
});
$('#dialog').dialog('open'); /// срабатывает

$("#start").click(function(){
    var ready1 = <?php echo $user->ready1; ?>;
    var ready2 = <?php echo $user->ready2; ?>;
    if(ready1 != 0 && ready2 != 0)
    { 
	/// что тут неважно	
    }
    else
    {	
        alert('hello world!11'); /// срабатывает
        $('#dialog').dialog('open'); /// но если стоит это, то не работает
    }
	
});


Помогите что я не так делаю, div сверху стоит если что.

zebra 18.10.2011 22:16

Вызывайте код после готовности DOM. Может прокатит :write:
$(document).ready(function() {
$("#dialog").dialog({
//...

});

DjDiablo 18.10.2011 22:18

1) Правильно писать
Ok: function() {
		$( this ).dialog( "close" );
}

2) нафига вам destroy ? (Так после нажатия ok заголовок повторно открываться не будет.)
вместо $('#dialog').dialog("destroy");
пишите $( this ).dialog( "close" );

3) Поместите код внутрь. (стиль лучше соблюдать. )
$(document).ready(function(){
... ваш код
});


4) отпишитесь что это дало.

DuMBaSSn1 19.10.2011 17:52

1) Без изменений, на кнопки не реагирует
2) Тоже самое
3) Поместил, alert по прежнему открывается, а диалог нет.

DuMBaSSn1 19.10.2011 17:57

Может я не так подключил скрипты?

<link type="text/css" href="components/com_hello/css/custom-theme/jquery-ui-1.8.16.custom.css" rel="stylesheet" />
<script src="components/com_hello/js/jquery-1.6.2.min.js" type="text/javascript"></script>
<script src="components/com_hello/js/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>

DjDiablo 19.10.2011 20:49

<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=windows-1251" /> 
<title></title> 
 <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css"> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script> 

<script type="text/javascript"> 
$(document).ready(function(){
$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    buttons: { 
        //"Ok": function() {  //этот код тоже рабочий, но сами создатели jquery UI так никогда не напишут.
        Ok: function() {  
            $(this).dialog("close");   // кнопки  работают
            // $("#dialog").dialog("close"); // даже это будет работать, хоть это и не красиво
        },  
        Cancel: function() {  
            $(this).dialog('close');   // кнопки  работают
        }  
    }
        
});

//К сведению если вместо autoOpen: false, написать autoOpen: true, эту строку с dialog('open'); можно не писать
$('#dialog').dialog('open'); /// срабатывает



$("#start").click(function(){    
        //alert('hello world!11'); /// срабатывает 
        $('#dialog').dialog('open'); ///  работает!!!!!!!     
	
});
});

</script> 

</head> 

<!--  Собственно тело нашего html, из 2х строк -->

<body> 
<div id="dialog">я диалог</div>
<div id="start">(НАЖМИ НА МЕНЯ)</div>

</body> 
</html>

ВРОДЕ ВСЁ НОРМ ))

Небольшое дополнение.
Глядя на это "components/" я подумал, а вы случайно не для битрикса компонент пишите? (впрочем это касается вообще любых систем с виджетами, компонентами, плагинами smarty и тд )

Если да, то убедитесь что скрипты подключаюся хотябы в шаблоне страницы, и не дай бог в шаблоне компонента.Это касается всех компонентов в системе, а не только вашего.

Любой компонент с таким кривым подключением скриптов, отрендеренный после вашего, убьёт все jquery скрипты что были до него. Обновление такого компонента по Ajax 2.0 (тупо передача html, сгенеренная по шаблону коспонента) - также убьёт скрипты jquery.

Логика проста: нельзя подключать jQuery, после подключения jQuery.

DuMBaSSn1 19.10.2011 21:24

Делаю компонент для joomla, в обычном html документе работает, а тут отказывается, как думаете может из-за jommla?

DjDiablo 19.10.2011 21:43

Проверь другие компоненты как я написал, убедись что jquery не подключается несколько раз.
Вместо #dialog попробуй другое имя, а то вдруг кто-то использует уже.

DuMBaSSn1 19.10.2011 21:57

Jquery подключается вроде 1 раз, даже если отключить jquery в компоненте то все не работает.

Еще заметил если сделать так:

///.....
else
{
    $('#dialog').dialog('open');  // На этом месте действие прерывается, т.к. alert уже не открывется
    alert('hello world!11');
}
///.....

DuMBaSSn1 19.10.2011 22:00

Может связано с div? Он (текст из дива) воявляется на странице всего на секунду, затем пропадает и открывается диалог. После закрытия диалога (на крестик) текст из дива также отсутствует.


Часовой пояс GMT +3, время: 01:48.