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