Я решил свою оригинальную проблему, но мне интересно, есть ли более элегантное решение. Я использую Foundation Orbit для создания слайд-шоу. Это не просто слайд-шоу, это слайд-шоу, где каждый слайд имеет определенный заголовок для данных, и внутри этой надписи есть HTML, который должен загружать модальный диалог.
Если вы используете Foundation, вы сразу же подумаете об использовании библиотеки Reveal для создания модального диалога, и я бы хотел, но требования требуют использования prettyPhoto. (Таковы требования.) Ну, проблема заключается в том, что исходные элементы в заголовке данных не влияют на исходный вызов инициализации:
$("a[rel^='prettyPhoto']").prettyPhoto();
Что мне нужно сделать, это обязательно инициализировать каждый заголовок данных, когда он загружен. Ну, вот проблема. Я решил это для слайд-переходов, используя событие afterSlideChange, но проблема - первый слайд. Мне нужно вызвать этот метод для первого слайда, который отображается.
Вот код, который решает эту проблему:
<script type="text/javascript">
$(window).load(function () {
$('#featured').orbit({
afterSlideChange:function () {
$("a[rel^='prettyPhoto']").prettyPhoto({
default_width:640,
default_height:500,
theme:'light_square'
});
}, // empty function
fluid:true // or set a aspect ratio for content slides (ex: '4x3')
});
$("a[rel^='prettyPhoto']").prettyPhoto({
default_width:640,
default_height:500,
theme:'light_square'
});
});
</script>
Есть ли лучший способ сделать это, не дублируя этот код. Должен ли я определить собственное событие initializeSlide, или есть какой-то ответ, который я просто отсутствую?