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
Форумы портала PHP.SU :: Версия для печати :: JS не работает, если подгрузить аяксом
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » JS не работает, если подгрузить аяксом

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

1. isle - 11 Января, 2011 - 01:18:49 - перейти к сообщению
Перепробовал несколько разных вариантов и не могу понять, почему 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>


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

Может, кто сталкивался с этим и знает, куда копать? Подгрузку джиквери делал всяко разно - не работает.
2. grefon - 11 Января, 2011 - 01:56:46 - перейти к сообщению
Все правильно, и так и должно быть. jquery понимает подгружаемый текст через ajax как набор символов а не как разметку, по этому для него подгружаемого объекта id="check_slide_other_headers_list" не существует.
Я когда-то тоже столкнулся с такой проблемой и методом экспериментов выяснил, что если в подгружаемом контенте разместить javascript, который будет обрабатывать объекты, то все сработает. Но в этом случае нужно быть аккуратным с уникальными именами и id. И на сколько я помню ишак такой метод не воспринимает, а все остальные браузеры вроде хавают.
3. isle - 11 Января, 2011 - 07:22:36 - перейти к сообщению
grefon, я пробовал скрипты подгружать внутри, но они не схватываются почему-то, как с джиквери, так и без... как целую html-страницу, так и только БОДИ с ХИДЕРОМ, их вместе и по отдельности. Ох, ёлки, в чём ошибка - уже весь мозг сломал... Может, как-то экранировать нужно кавычки или что???

Вы бы не могли свой примерчик для наглядности кинуть? - я с полоборота дальше сам разберусь. Закатив глазки
4. Viper - 11 Января, 2011 - 07:49:21 - перейти к сообщению
isle для обхода этого в JQ существует метод live()

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


так эе если хотите чтобы работали плагины для ajax-контента то есть плагин livequery
5. isle - 11 Января, 2011 - 09:00:43 - перейти к сообщению
Viper, спасибо огромное! Так работает!
Блин, даже не знал, как правильно загуглить, мозг сломал, а оно вот так просто Ха-ха
6. JustUserR - 12 Января, 2011 - 15:47:09 - перейти к сообщению
isle Использование возможности загруки исполняемого JS-кода в процесс исполнения основного потока обработки пользовательской HTML-страницы включает необходимость осуществления - не только контроля уровня трактования загружаемых информационных полей с предполагаемым JS-кодом в процессе изменения состояния контейнерного элемента - но и реализацию их последующей интеграции в основной поток исполняемого кода страницы В зависимости от целевого используемого браузера и модели потоков исполнения и контроля объектов в нем - возможны различные реализации предполагаемой задачи

 

Powered by ExBB FM 1.0 RC1