Надеюсь, название не требует пояснений. В любом случае, Я пытаюсь перезагрузить (или перечитать) функцию в jQuery после запуска другого процесса (в данном случае плагин prettyPhoto).
Это моя текущая функция jQuery:
/** Scrolling Sidebar function **/
var $sidebar = $(".sideBar"),
$window = $(window),
$mainImage = $(".mainImage"),
offset = $sidebar.offset(),
threshold = $mainImage.height() - $sidebar.height(),
topPadding = 15;
<?php if ( $options['scroll_sidebar'] == true ) { ?>
if( $mainImage.height() >= 400 ) {
$window.scroll(function() {
if ($window.scrollTop() > threshold) {
if( $('.sideBar').has('.zoomImage').length ) {
$sidebar.stop().animate({
marginTop: threshold + 50
});
} else {
$sidebar.stop().animate({
marginTop: threshold + 60
});
}
} else if ($window.scrollTop() > offset.top) {
$sidebar.stop().animate({
marginTop: $window.scrollTop() - offset.top + topPadding
});
} else {
$sidebar.stop().animate({
marginTop: '40px'
});
}
});
}
<?php } ?>
И prettyPhoto запускается при нажатии на тег привязки с классом fullSize.
Я следовал за этим потоком, чтобы перезагрузить «кодовый блок», используя метод setTimeout. Вот что я сделал: (обернул предыдущий код внутри функции, использовал setTimeout внутри этой функции, а затем вызвал setTimeout вне функции)
/** Scrolling Sidebar function **/
function scrollSidebar() {
var $sidebar = $(".sideBar"),
$window = $(window),
$mainImage = $(".mainImage"),
offset = $sidebar.offset(),
threshold = $mainImage.height() - $sidebar.height(),
topPadding = 15;
<?php if ( $options['scroll_sidebar'] == true ) { ?>
if( $mainImage.height() >= 400 ) {
$window.scroll(function() {
if ($window.scrollTop() > threshold) {
if( $('.sideBar').has('.zoomImage').length ) {
$sidebar.stop().animate({
marginTop: threshold + 50
});
} else {
$sidebar.stop().animate({
marginTop: threshold + 60
});
}
} else if ($window.scrollTop() > offset.top) {
$sidebar.stop().animate({
marginTop: $window.scrollTop() - offset.top + topPadding
});
} else {
$sidebar.stop().animate({
marginTop: '40px'
});
}
});
}
$('a.fullSize').click(function() {
setTimeout(scrollSidebar, 1000);
});
<?php } ?>
}
setTimeout(scrollSidebar, 1000);
К сожалению, это не сработало. Итак, есть ли у вас какие-либо идеи относительно того, как я могу перезагрузить / перечитать функцию после запуска другого действия / плагина?
Спасибо!
Chris