Использование плагинов jQuery с live()
У меня есть страница, которая динамически загружает содержимое с помощью функции jQuery load (), поэтому мне нужно использовать live () для каждой из моих функций jQuery на этой странице. Однако я не могу заставить live () работать с плагинами jQuery. Например, я хочу использовать аккордеон jQuery:
$("#accordion").accordion();
Но я не могу найти правильный синтаксис, чтобы заставить аккордеон работать с live (). Я пытался:
$("#accordion").live("load", accordion());
$("#accordion").live("load", $("#accordion").accordion());
$("#accordion").live("load", $(this).accordion());
Я либо получаю ошибку" b не определен", либо " аккордеон не определен."
2 ответа:
Вы должны использовать анонимную функцию
$("#accordion").live('load',function(){ $(this).accordion(); });
Редактировать:
Если аккордеон уже находится на странице, когда вы его впервые визуализируете, то вы не должны вызывать его с помощью live (), а по загрузке страницы
$(function(){ $("#accordion").accordion(); });
Это может частично ответить на ваш вопрос:
Я бы предложил вместо этого использовать livequery:
$("#accordion").livequery( function() { $(this).accordion(); }, function() { $(this).accordion("destroy"); } );
Первая функция инициализирует функциональность аккордеона jQuery UI на любом элементе $("#accordion"), добавленном в DOM, а вторая уничтожит объект аккордеона, когда этот же элемент будет удален из DOM.