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 сверху стоит если что. |
Вызывайте код после готовности DOM. Может прокатит :write:
$(document).ready(function() { $("#dialog").dialog({ //... }); |
1) Правильно писать
Ok: function() { $( this ).dialog( "close" ); } 2) нафига вам destroy ? (Так после нажатия ok заголовок повторно открываться не будет.) вместо $('#dialog').dialog("destroy"); пишите $( this ).dialog( "close" ); 3) Поместите код внутрь. (стиль лучше соблюдать. ) $(document).ready(function(){ ... ваш код }); 4) отпишитесь что это дало. |
1) Без изменений, на кнопки не реагирует
2) Тоже самое 3) Поместил, alert по прежнему открывается, а диалог нет. |
Может я не так подключил скрипты?
<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> |
<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. |
Делаю компонент для joomla, в обычном html документе работает, а тут отказывается, как думаете может из-за jommla?
|
Проверь другие компоненты как я написал, убедись что jquery не подключается несколько раз.
Вместо #dialog попробуй другое имя, а то вдруг кто-то использует уже. |
Jquery подключается вроде 1 раз, даже если отключить jquery в компоненте то все не работает.
Еще заметил если сделать так: ///..... else { $('#dialog').dialog('open'); // На этом месте действие прерывается, т.к. alert уже не открывется alert('hello world!11'); } ///..... |
Может связано с div? Он (текст из дива) воявляется на странице всего на секунду, затем пропадает и открывается диалог. После закрытия диалога (на крестик) текст из дива также отсутствует.
|
Часовой пояс GMT +3, время: 01:48. |