Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: JS не работает, если подгрузить аяксом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: JS не работает, если подгрузить аяксом, почему?
isle
Отправлено: 11 Января, 2011 - 01:18:49
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




Перепробовал несколько разных вариантов и не могу понять, почему JS не работает, если подгрузить его аяксом? То есть если я выполняю через аджакс запрос на получение данных, то все нормально отображается, но джиквери никак не хочет работать, стили подхватываются. Меня бы пнуть в нужную сторону, почему так?

Например, вот такая страница нормально грузится отдельно и блок разворачивается на джиквери:

CODE (html):
скопировать код в буфер обмена
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" dir="ltr" lang="ru-RU">
  3.  
  4. <head>
  5. <script type="text/javascript" src="http://isle-arch.ru/js/jquery.js"></script>
  6. <script type="text/javascript">
  7.   $("#check_slide_other_headers_list").click(function(){$("#panel_check_other_headers_list").slideToggle("slow");
  8.   $(this).toggleClass("active"); return false;})
  9. </script>
  10. </head>
  11.  
  12. <body>
  13.  
  14. <a id="check_slide_other_headers_list" href="#slide" class="check_slide">&nbsp;</a>
  15. <div id="panel_check_other_headers_list" class="panel_check_list" style="border:1px solid lightblue;">000</div>
  16.  
  17. </body>
  18. </html>


Но если эту страницу всю, либо только то, что в БОДИ загрузить через аякс в блок, то джиквери (т.е. тег А) не разворачивает див.

Может, кто сталкивался с этим и знает, куда копать? Подгрузку джиквери делал всяко разно - не работает.
 
 Top
grefon
Отправлено: 11 Января, 2011 - 01:56:46
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Все правильно, и так и должно быть. jquery понимает подгружаемый текст через ajax как набор символов а не как разметку, по этому для него подгружаемого объекта id="check_slide_other_headers_list" не существует.
Я когда-то тоже столкнулся с такой проблемой и методом экспериментов выяснил, что если в подгружаемом контенте разместить javascript, который будет обрабатывать объекты, то все сработает. Но в этом случае нужно быть аккуратным с уникальными именами и id. И на сколько я помню ишак такой метод не воспринимает, а все остальные браузеры вроде хавают.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
isle
Отправлено: 11 Января, 2011 - 07:22:36
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




grefon, я пробовал скрипты подгружать внутри, но они не схватываются почему-то, как с джиквери, так и без... как целую html-страницу, так и только БОДИ с ХИДЕРОМ, их вместе и по отдельности. Ох, ёлки, в чём ошибка - уже весь мозг сломал... Может, как-то экранировать нужно кавычки или что???

Вы бы не могли свой примерчик для наглядности кинуть? - я с полоборота дальше сам разберусь. Закатив глазки
 
 Top
Viper
Отправлено: 11 Января, 2011 - 07:49:21
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




isle для обхода этого в JQ существует метод live()

В вашем примере нужно переписать код
CODE (javascript):
скопировать код в буфер обмена
  1. $(selector).live('click', function(){
  2.         $(this)...
  3. });


так эе если хотите чтобы работали плагины для ajax-контента то есть плагин livequery


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
isle
Отправлено: 11 Января, 2011 - 09:00:43
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




Viper, спасибо огромное! Так работает!
Блин, даже не знал, как правильно загуглить, мозг сломал, а оно вот так просто Ха-ха
 
 Top
JustUserR
Отправлено: 12 Января, 2011 - 15:47:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




isle Использование возможности загруки исполняемого JS-кода в процесс исполнения основного потока обработки пользовательской HTML-страницы включает необходимость осуществления - не только контроля уровня трактования загружаемых информационных полей с предполагаемым JS-кодом в процессе изменения состояния контейнерного элемента - но и реализацию их последующей интеграции в основной поток исполняемого кода страницы В зависимости от целевого используемого браузера и модели потоков исполнения и контроля объектов в нем - возможны различные реализации предполагаемой задачи


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB