Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.04.2013, 19:21
Интересующийся
Отправить личное сообщение для afr0 Посмотреть профиль Найти все сообщения от afr0
 
Регистрация: 23.10.2012
Сообщений: 10

Подгрузка JS + ajax...
Есть подключенный JS файл, при использовании подгрузки страницы через AJAX еще раз загружается этот JS файл.

Так вот проблема в том, что если JS файл не подгружать заново, то новые элементы, подгруженные через AJAX не активны (JS функции не привязываются к новым ID)
Если подгружать, то через несколько (5-10) загрузок сайт просто виснет, т.к. новый JS подгружается, а старые не выгружаются.

Что делать? Что-то слышал про fullajax, но мало времени пробовать то, что может не помочь,

Очень хочется услышать грамотное решение этой проблемы
Ответить с цитированием
  #2 (permalink)  
Старый 09.04.2013, 23:57
Аватар для bret
Кандидат Javascript-наук
Отправить личное сообщение для bret Посмотреть профиль Найти все сообщения от bret
 
Регистрация: 04.10.2008
Сообщений: 128

Определённо нужно подгружать только контент, на успешный коллбэк аякса навесить функцию, которая будет прикреплять обработчики событий элементам, если это не было сделано ранее.
__________________
я подыскиваю мозг... твой подойдёт
Ответить с цитированием
  #3 (permalink)  
Старый 10.04.2013, 09:32
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

А как вы работаете с новыми подгруженными элементами? обрабатываете чистым javascript?
И как вы потом добавляете полученные элементы в DOM?

Опишите более подробнее задачу
Ответить с цитированием
  #4 (permalink)  
Старый 10.04.2013, 11:32
Интересующийся
Отправить личное сообщение для afr0 Посмотреть профиль Найти все сообщения от afr0
 
Регистрация: 23.10.2012
Сообщений: 10

Задача такая:

Новые элементы, подгруженные через ajax должны автоматически привязываться к событиям (например .click() по этому элементу)

Все эти события загружаются сразу при первом открытии страница, следовательно, после загрузки новых элементов они уже не работают.

Функцию $.ajaxComplete пробовал, но она каждый раз заново загружает все события, следовательно они дублируются на те элементы, которые не поменялись (т.е. при нажатии на какой-либо элемент уже не 1 раз срабатывает функция, а 2, если аjax запрос был выполнен 2 раза, то срабатывает 4 и т.д.) в итоге просто виснет комп....

Я вижу 2 варианта решения:
1) будет при каждом новом ajax запросе очищаться все старые скрипты (выгружаться из браузера) и будет загружаться новый
2) JS - файл подгружается 1 раз в шапке и после каждого нового ajax запроса все старые скрипты будут применяться к новым загруженным элементам.

Вот только я не знаю как реализовать ни первый вариант, ни второй...

Fullajax плагин поидее решает данную проблему, но не могу найти ни документации, ни свежих версий, я так понимаю, что разработка закончилась году этак в 10... (
Ответить с цитированием
  #5 (permalink)  
Старый 10.04.2013, 11:55
Интересующийся
Отправить личное сообщение для afr0 Посмотреть профиль Найти все сообщения от afr0
 
Регистрация: 23.10.2012
Сообщений: 10

Я решил данную проблему. Срабатывает по событию .ajaxComplete()
Внутри дописал $(" * ").off("click");

Т.е. сначала отменяются все предыдущие события и потом подгружаются новые....

Скажите пожалуйста, насколько кривой такой вариант? =)
Ответить с цитированием
  #6 (permalink)  
Старый 10.04.2013, 12:19
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

У вас события нажатия на какие то подгружаемые объекты. Например, на div.

Создайте обработчик
$(".selector").live("click", function(){
// тут ваша логика
})


Даже если на странице появится новые элементы с таким селектором, этот обработчик будет действовать и на них тоже
Ответить с цитированием
  #7 (permalink)  
Старый 10.04.2013, 13:28
Аватар для bret
Кандидат Javascript-наук
Отправить личное сообщение для bret Посмотреть профиль Найти все сообщения от bret
 
Регистрация: 04.10.2008
Сообщений: 128

Если надумаете обновлять jquery - юзайте сразу on вместо live. Забиндите один раз и off делать не надо будет
__________________
я подыскиваю мозг... твой подойдёт
Ответить с цитированием
  #8 (permalink)  
Старый 10.04.2013, 13:37
Интересующийся
Отправить личное сообщение для afr0 Посмотреть профиль Найти все сообщения от afr0
 
Регистрация: 23.10.2012
Сообщений: 10

Спасибо
Ответить с цитированием
  #9 (permalink)  
Старый 10.04.2013, 14:38
Интересующийся
Отправить личное сообщение для wc3banderlog Посмотреть профиль Найти все сообщения от wc3banderlog
 
Регистрация: 30.01.2011
Сообщений: 23

Сообщение от bret Посмотреть сообщение
Если надумаете обновлять jquery - юзайте сразу on вместо live. Забиндите один раз и off делать не надо будет
Кстати, да!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ajax подгрузка контента и js обработка foreach jQuery 0 23.03.2013 16:11
ajax и загрузка html сраницы с js в <div> eidicon jQuery 2 09.05.2012 16:26
Подгрузка Divа вместе с JS BoB AJAX и COMET 7 02.03.2012 18:31
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
Ajax. Полноценная подгрузка страниц, содержащих CSS и JS. Alex22 AJAX и COMET 6 05.11.2008 23:53