Прежде всего, я прочитал соответствующие посты здесь, на Stackoverflow, но я все еще застрял.
У меня есть страница, которая загружает данные, используя пользовательский плагин сетки. Эти данные должны иметь ссылку, которая запускает модальное окно (с помощью плагина jqModal). Окно присутствует в html, не извлекается каким-либо вызовом ajax. Так что, если я присоединяю обработчик событий к ссылке, присутствующей на странице HTML, он работает нормально. Если я применю его к ссылке, созданной этим плагином сетки, он не будет работать.
Следующее будет работать со ссылками, уже представленными в html, но не над ссылками, сгенерированными плагином:
$(function() {
var Foo = $('#Foo');
Foo.jqm({trigger: 'a.bar'});
});
Мне кажется, я понимаю, почему это так, но я не могу решить проблему. live не вырезает его, так как событие, которое должно присоединить это, является загрузкой, а не щелчком или каким-либо другим событием, разрешенным jQuery 1.3.2 (не может использовать версию 1.4). Я подумал, что bind может быть ответом, но я не могу заставить его работать, и я уверен, что только я не "получаю это".
Любые предложения приветствуются, так как я слишком долго стучал об этом.
О, пример того, что я сделал выяснил, как делать с динамически загружаемыми данными:
$('body').click(function(event) {
if ($(event.target).is('a.bar')) {
$(event.target).toggleClass('baz');
}
});
Это успешно добавит класс «baz» к динамически загружаемой ссылке «a.someLink» по щелчку (я думал, что мог бы добавить класс триггера к ссылкам таким образом, но не могу понять, как это сделать при загрузке в отличие от щелчка) но ссылка не вызовет модальное окно, и я не уверен, почему.
РЕДАКТИРОВАТЬ: Я добавляю обратный вызов в плагин пользовательской сетки, но пока я использовал следующее, чтобы заставить работать:
$( '.someclass' ).animate( {opacity: 1}, 2000, function(){
Foo.jqm({trigger: 'a.bar'});
});
Взломать, но это уловка в крайнем случае.