2013-03-21 1 views
0

У меня есть построить плагин (pluginA), основанный на zeptojs и внутри этого плагина я выборки данных с помощью Ajax и приложить список <a href=""></a>Zeptojs на() не вызывает

Как связать событие с этими якорями? Я собирался что-то глобально, как <a href="..." data-key="ABC123"></a>, а затем использовать $('[data-key]').pluginB(), а затем внутри pluginB() есть что-то вроде

$(this).on('click', function (e) { e.preventDefault(); ... });, но я не в состоянии связать событие щелчка на якоря, созданных динамически.

Я попытался добавить $('a').on('click', ...), прежде чем позвонить pluginA(), но это не стрельба.

Я бы хотел использовать метод trigger(), чтобы развязать два плагина, но у меня возникли проблемы с поиском хорошего примера.

+0

Возможно, я нашел проблему. Мой $ ('a'). On ('click', ...) прикрепляется до того, как запрос ajax выполняется внутри pluginA. –

ответ

0

Используйте форму делегирования on связать все нужные ссылки в определенной области (в данном примере всего тело):

$(body).on('click', 'a[data-key]', function(e) {e.preventDefault();...}); 

Теперь все ссылки с data-key будут инициировать функцию, независимо от того, не они присутствовали в то время, когда вы позвонили on; впоследствии добавленные ссылки будут автоматически получать поведение, а удаленные ссылки не будут утечки памяти, удерживая оборванные ссылки обработчика.