Проблема в следующем: при запуске jshowoff он удаляет все дочерние элементы из контейнера #jshowoff
и помещает их в переменную. Затем он добавляет их в контейнер один за другим. Из-за этого ваши ссылки отсутствуют в DOM в тот момент, когда вы пытаетесь их show()
. Что вы можете сделать, это скрыть полный элемент jshowoff
перед вызовом jshowoff()
, а затем снова показать его после завершения вызова:
$ (document).ready(function() {
$('a.jshowoff-link')
.wrap('<li class="jshowoff-slide"></li>');
$('li.jshowoff-slide')
.wrapAll('<ul id="jshowoff"></ul>');
var $container = $('#jshowoff');
$container.hide();
// figures out if there's more than one <li> being produced
if (banners.length > 1) {
// if so, build the jshowoff
$container.jshowoff({speed:7000, changeSpeed:1000, autoPlay:true, controls:true, links:true, animatePause:false, hoverPause:false });
}
else {
// if not, disable the function
$container.jshowoff({speed:7000, changeSpeed:1000, autoPlay:false, controls:false, links:false, animatePause:false, hoverPause:false });
}
// show the jshowoff after it's been built to stop flash of content on slow internet connections
$container.show();
return false;
});
Если у вас все еще есть мигающие элементы, вы также можете сначала спрятать ссылки, создать контейнер, спрятать его, снова показать ссылки, а затем добавить jshowoff и снова показать контейнер, например:
// hide banners to begin with
$ ('.jshowoff-link').hide();
$ (document).ready(function() {
$('a.jshowoff-link')
.wrap('<li class="jshowoff-slide"></li>');
$('li.jshowoff-slide')
.wrapAll('<ul id="jshowoff"></ul>');
var $container = $('#jshowoff');
$container.hide();
// The links are still attached to the DOM at this point, but hidden inside the hidden container.
$('.jshowoff-link').show();
// figures out if there's more than one <li> being produced
if (banners.length > 1) {
// if so, build the jshowoff
$container.jshowoff({speed:7000, changeSpeed:1000, autoPlay:true, controls:true, links:true, animatePause:false, hoverPause:false });
}
else {
// if not, disable the function
$container.jshowoff({speed:7000, changeSpeed:1000, autoPlay:false, controls:false, links:false, animatePause:false, hoverPause:false });
}
// show the jshowoff after it's been built to stop flash of content on slow internet connections
$container.show();
return false;
});