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 :: Версия для печати :: презагрузка dom после ajax
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » презагрузка dom после ajax

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

1. netwixell - 24 Сентября, 2013 - 22:22:35 - перейти к сообщению
Cтолкнулся с такой проблеммой, что те ссылки которые вставлены в результате ajax запроса не откликаются на обработчик событий. Подскажите еcли знаете решение или адекватный пост на эту тему.


CODE (javascript):
скопировать код в буфер обмена
  1. function go_to(){
  2. $('a').bind('click', function(event){
  3. if(this.href == ''){
  4. } else {
  5. ajax(this.href, 1);
  6. }
  7. return false;
  8. });
  9. }


тоже самое будит и с popstate

CODE (javascript):
скопировать код в буфер обмена
  1. function popstate(){
  2. $(window).bind('popstate', function(event){
  3. ajax(location.href, 0);
  4. return false;
  5. });
  6. }
2. SAD - 25 Сентября, 2013 - 00:34:07 - перейти к сообщению
какая версия jquery?
3. LIME - 25 Сентября, 2013 - 05:36:15 - перейти к сообщению
http://jquery[dot]page2page[dot]ru/index.php5/On
4. ALEN - 25 Сентября, 2013 - 09:01:49 - перейти к сообщению
Перезагрузка DOM в данном вопросе, черевата утечкой памяти, поскольку старые ссылки не удаляются из памяти до перезагрузки страницы, а в памяти образуется огромное количество дублей существующих объектов.
На пальцах,после перезагрузки страницы раз эдак 100 страница начинает тупить.

Для решения задачи, лучше использовать вызов функции через тот-же onClick

P.S. Кому интересно, покажу пример реализации с формами и с ссылками. В личку только skype пишите.

P.P.S. В конкретном случае не работает, т.к. после подзагрузки DOM, нужно повторно вешать события, в этом примере - попробуйте после подзагрузки вызывать go_to()
5. LIME - 25 Сентября, 2013 - 09:29:58 - перейти к сообщению
.
6. SAD - 25 Сентября, 2013 - 11:24:47 - перейти к сообщению
если в вашей версии есть .on(), то можно сделать так


CODE (javascript):
скопировать код в буфер обмена
  1. $(document.body).on('click', 'a', function(event){


или же как написал ALEN
7. tuareg - 25 Сентября, 2013 - 19:47:58 - перейти к сообщению
ALEN пишет:
На пальцах,после перезагрузки страницы раз эдак 100 страница начинает тупить.

Было бы интересно посмотреть.(в личку написал) По поводу утечек. Если Вы вешаете события с помощью jQuery, то "убивать" их надо с помощью ее же.
Т.е не использовать el.innerHtml = '', а использовать типа $('').remove(); При удалении jQuery сама проверит.
8. ALEN - 26 Сентября, 2013 - 08:27:46 - перейти к сообщению
tuareg, на реальном деле, не все так сладко, удалив DOM объект, из памяти ссылка на него не удаляется, а при огромном количестве ссылок, которые нужно после каждой "подзагрузки" переопределять, происходит видимая утечка.
9. SAD - 26 Сентября, 2013 - 10:00:01 - перейти к сообщению
на хабре буквально вчера была статья про утечки от Яндекса
10. tuareg - 27 Сентября, 2013 - 06:02:58 - перейти к сообщению
Я просто оставлю http://learn[dot]javascript[dot]ru/memory-leaks

 

Powered by ExBB FM 1.0 RC1