Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не работает модальное окно в подгружаемой вкладке. (https://javascript.ru/forum/jquery/30912-ne-rabotaet-modalnoe-okno-v-podgruzhaemojj-vkladke.html)

Arey 20.08.2012 12:49

Не работает модальное окно в подгружаемой вкладке.
 
Привет всем! Возникла сложность не знаю как решить... Есть страница в которой две вкладки реализованой через Jquery UI tabs одна из которых (вторая) подгружает во вкладку страничку через Ajax. Так вот конструкция
<a id="open_dialog_new_position" href="#"><img align="top" src="/tdt/images/document-import.png"></a>
<div id="dialog_new_position">
проверка
</div>

размещенная в первой вкладке работает нормально, она же размещенная в подгружаемой страничке не работает совсем, т.е. я на второй странице вижу и ссылку и надпись "проверка", естественно при клике на ссылку ничего не происходит... Подскажите как победить проблему если кто сталкивался. Заранее спасибо.

Deff 20.08.2012 15:31

Arey,
Аякс загрузку нужно делать через чистый Aякс responseText
Либо отдельно подгрузить (или сразу установить скрипты) для подгружаемой вкладки, обычный get или load скрипты отсекает
Если скрипты уже стоят на странице - то
1. Можно их переинициализировать по загрузке вкладке(скорей всего у Вас события в скрипте не live)
2. Любо прописываем через "Живые события" on или live

Arey 20.08.2012 17:57

Цитата:

Сообщение от Deff (Сообщение 199038)
Arey,
Аякс загрузку нужно делать через чистый Aякс responseText
Либо отдельно подгрузить (или сразу установить скрипты) для подгружаемой вкладки, обычный get или load скрипты отсекает
Если скрипты уже стоят на странице - то
1. Можно их переинициализировать по загрузке вкладке(скорей всего у Вас события в скрипте не live)
2. Любо прописываем через "Живые события" on или live

К сожалению я пока еще очень сильно плаваю в яваскрипт и надстройках... Можно немного более развернуто написать все то что Вы написали?
Если я правильно понял, то проблема в том что у меня появляются дивы которые долны быть обработаны до момента загрузки страницы и появление новых блоков которым должны быть присвоены соответсвующие параметры, в частности hide на модальное окно происходит после того, как собственно уже все присвоено, и так как нет никаких событий позволяющих это сделать заново и присвоить эти параметры то окно видно. Я правильно понял? Если да то насколько я понял после загрузки страницы на сделать что-то типа "перезапуска" куска кода? Если логика верна подскажите пожалуйста как это лучше сделать.

Deff 20.08.2012 18:31

Arey,
Если скрипты уже стоят на странице(а не подгружаются с контентом - то события им нужно прописывать либо через live, либо через on в версиях более 1.7.0
live для старых версий => http://jquery-docs.ru/Events/live/#typefn

Arey 20.08.2012 22:17

Цитата:

Сообщение от Deff (Сообщение 199137)
Arey,
Если скрипты уже стоят на странице(а не подгружаются с контентом - то события им нужно прописывать либо через live, либо через on в версиях более 1.7.0
live для старых версий => http://jquery-docs.ru/Events/live/#typefn

Скрипты уже стоят на странице, ткните пожалуйста пальцем как должно быть, вот так сейчас:
$(function(){
  $("#dialog_new_position").dialog({
    autoOpen: false,
    modal: true,
    title: 'Новая позиция'
  });
  $("#open_dialog_new_position").click(function(){
    $("#dialog_new_position").dialog("open");
  });
  $("#close_dialog_new_position").click(function(){
    $("#dialog_new_position").dialog("close");
  });
});

в погружаемой странице есть
<a id="open_dialog_new_position" href="#">проверить</a>
<div id="dialog_new_position">
проверка
</div>

Deff 20.08.2012 22:20

Цитата:

Сообщение от Arey
Скрипты уже стоят на странице, ткните пожалуйста пальцем как должно быть, вот так сейчас:

Версия jQuery - какая ?

Arey 20.08.2012 22:23

1.8 самая свежая

Deff 20.08.2012 23:19

$(function(){
  $("#dialog_new_position").dialog({
    autoOpen: false,
    modal: true,
    title: 'Новая позиция'
  });
  $("#open_dialog_new_position").on('click',function(){
    $("#dialog_new_position").dialog("open");
  });
  $("#close_dialog_new_position").on('click',function(){
    $("#dialog_new_position").dialog("close");
  });
});

Deff 20.08.2012 23:22

Цитата:

Сообщение от Arey
<a id="open_dialog_new_position" href="#">проверить</a>

Ксать - интересует - а иные , прошлые вкладки с таким id - остаются ?

Arey 20.08.2012 23:50

Цитата:

Сообщение от Deff (Сообщение 199208)
Ксать - интересует - а иные , прошлые вкладки с таким id - остаются ?

В смысле есть ли еще на странице элементы с таким же id? Если это имелось ввиду то нет, id не повторяются...


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