Ответы пользователя по тегу JavaScript
  • Почему не работает javascript после ajax получения ответа?

    antonio1107
    @antonio1107
    Заместитель руководителя
    Решено! JQuery обработчики, такие как hover(), click(), bind(), on() и т.д. обрабатывают элементы только при загрузке.
    Чтобы они реагировали на подгруженный ajax'ом контент, есть несколько решений:
    1. Загрузить ajax'ом скрипт заново(не лучший вариант). Но работает.
    2. Использовать обработчик live(). Но с версии >= JQuery 1.9 его убрали и перенесли в обработчик on(), в котором объединили и bind(), и delegate().
    3. На мой взгляд, самый лучший. Для тега установить атрибут onClick, установить ему значение функции, например:
      а в скрипте переделать обработчики в функцию.
      Вместо:
      $("div").click(function(){
      //что-то делает
      });
      
      //переделать на:
      function function_name(){
      //что-то делает
      }

      Т.е. у тэга div при нажатии атрибут onClick вызывает эту функции. И тут без разницы, подгружен контент ajax'ом или нет.
      Если хотите в функции использовать значение $(this), то задайте в атрибуте у функции onClick="function_name(this);", а в скрипте в функции задайте событие для этого значения
      function function_name(i){
      $(i).вешаем обработчики
      //$(i) это тоже, что и $(this) у обработчика $("div").click()
      }



    Надеюсь, кому-то будет полезно :)
    Ответ написан
    3 комментария