2010-12-04 1 views
1

Я использую Fancybox на моем сайте для того, чтобы открывать ссылки на другие страницы (внешние страницы).JQuery Fancybox не работает после перезагрузки DIV

В основном пользователь нажимает на изображение, и это открывает fancybox, содержащий внешнюю страницу. Ссылки на изображение содержатся на странице (дочернем), которая отображается в DIV на другой странице (родительский). Родитель имеет возможность перезагрузить данные в DIV, перезагружая дочернюю страницу различными параметрами, которые приведут к изменению изображения и ссылок.

Все это отлично работает с первой нагрузкой. Но после этого, когда DIV перезагружается дочерней страницей, содержащей разные данные, всплывающее окно fancybox больше не работает. Если я затем сделаю обновление F5 на странице, он снова будет работать. Но только при первой загрузке.

код на странице ребенка для настройки FancyBox для ссылки на изображения:

$.noConflict(); 
$(document).ready(function() { 
    $(".userdetailslink").fancybox({ 
     'width'    : '80%', 
     'height'   : '80%', 
     'autoScale'   : false, 
     'transitionIn'  : 'elastic', 
     'transitionOut'  : 'elastic', 
     'type'    : 'iframe' 
    }); 
}); 

Я также попытался следующие с теми же результатами:

$.noConflict(); 
$(".userdetailslink").ready(function() { 
    $(".userdetailslink").fancybox({ 
     'width'    : '80%', 
     'height'   : '80%', 
     'autoScale'   : false, 
     'transitionIn'  : 'elastic', 
     'transitionOut'  : 'elastic', 
     'type'    : 'iframe' 
    }); 
}); 

Любая помощь будет оценена.

ответ

0

Вы используете методы AJAX для загрузки div? Вы можете использовать функцию обратного вызова, чтобы применить обработку событий к загруженному контенту.

$("div").load("url", function(){ 
     $(".userdetailslink").fancybox({ 
    'width'    : '80%', 
    'height'   : '80%', 
    'autoScale'   : false, 
    'transitionIn'  : 'elastic', 
    'transitionOut'  : 'elastic', 
    'type'    : 'iframe' 
    }); 

}); 

Этот способ запускается после загрузки. Конечно, вы выполняете начальную нагрузку, как и вы.

+0

Спасибо, ваш ответ имеет прекрасный смысл, но я попробовал его, и он по-прежнему загружается только при первой загрузке. Затем я просто добавил предупреждение о функции обратного вызова, чтобы узнать, вызвана ли она при каждой загрузке. И это. Но как только я добавляю вызов fancybox к обратному вызову, даже предупреждение отображается только один раз. Weird! Есть предположения? – hermanschutte 2010-12-04 20:41:54

 Смежные вопросы

  • Нет связанных вопросов^_^