Делал нагруженную ajax и jquery страницу и столкнулся с интересной проблемой. А обнаружилось случайно – просто заметил, что некоторые ajax-запросы посылаются несколько раз.
Немного понаблюдал за ситуацией и заметил что в таких случаях:
- Некая часть страницы генерируется по ajax.
- В этой странице тоже есть элементы, поведение которых программируется в jquery и может быть даже ajax.
- Понятно, что скрипты этого поведения вставляются вместе с этой частью страницы
- Всё в целом работает.
Но если потыкать мышками и повторить цикл вставки этой части страницы несколько раз то
- Скрипт “накапливает” все методы обработки. По крайней мере каждый следующий раз каждый клик срабатывает два-три-итд раз
- При этом сам HTML нормально вставлен один раз.
Куда копать? Какие слова гуглить? Как оказалось, нужно просто почитать матчасть!
Оказывается каждый раз обработчик добавляется к существующему. В таких случаях нужно очищать имеющиеся обработчики
Если обработчик задавался с помощью bind — используйте unbind, для live — die.
Делать это можно каждый раз перед определением обработчика.
1 2 3 4 5 6 | $(document).ready(function(){ $('#selector').die('click'); $('#selector').live('click',function(){ ................. }http://blogocms.ru/wp-admin/post-new.php?preview=true }); |
Так работает нормально
Посты по теме:
RSS-подписка