2009-08-25 3 views
2

Я хотел бы знать, существует ли какое-нибудь jquery-поведение, которое вызывает обработчики потерянных событий (в частности, в iframe)?jquery lost events

У меня странная проблема. Я построил webapp, состоящий из двух iframe. Сначала загружаю содержимое в первый iframe. Я добавляю обработчик событий, используя jquery для первого содержимого iframe. Все работает. При вводе пользователя я загружаю страницу во второй iframe. Здесь также добавляются некоторые обработчики событий, использующие jquery. Тогда происходит странное: jquery потерял обработчики событий в первом iframe. Я сказал «jquery lost», потому что, если я добавлю прослушиватель событий по-старому, он все еще присутствует.

+0

ли они когда-либо работать в первом IFRAME? это может быть проблема с одним доменом. – geowa4

+0

они работают в первом кадре I, пока я не загружу что-то во втором. Страница, содержащая ifrrames и страницы, загруженные в iframe, находится в одном домене. Обработчики событий связаны с дочерней страницей, а не с «отцом» – 2009-08-25 12:50:53

+0

ничего себе, эта последняя часть действительно интересна. jQuery - единственное, что работает? если это так, и вы можете последовательно воспроизводить его, создать образец страницы и отправить ошибку. это предполагает, что никто другой не может подумать о хорошей причине для этого. – geowa4

ответ

0

Возможно, вы хотите использовать live для привязки событий. Таким образом, когда вы добавляете новые элементы с одним и тем же селектором, у него будет связанное с ними событие.

$("p").live("click", function(){ 
    $(this).after("<p>Another paragraph!</p>"); 
}); 

Каждый последующий р, который добавляется к странице будет иметь событие переплетены тоже.

+0

неудачно, у меня довольно сложный webapp в первом i-м кадре, заменяя всю функцию bind живой, может быть сложно и где-то не возможно. Кроме того, я не добавляю контент в дом первого iframe. – 2009-08-25 13:07:44

2

Проблема решена.

Проблема была вызвана доступом iframe2.contentWindow или iframe2.contentDocument на второй IFRAME, когда ГКЗ второго фрейма был изменен (первый раз все работало, от второго и далее возникло проблемы), а второй кадр был статический закодированным в HTML.

Чтобы решить проблему, я всегда удаляю второй iframe и воссоздаю и добавляю его в dom динамически через javascript.

Проблема возникает только в опере 9.7 внедренной для трудоемкости (не уверена, для точной версии)