jQuery .show (); функция не отображает все элементы, которые были ранее скрыты - PullRequest
2 голосов
/ 11 января 2011

Может кто-нибудь помочь мне, пожалуйста?Мне нужно скрыть элемент .jshowoff-link до того, как остальная часть jQuery создаст список элементов.Затем я показываю тот же элемент в конце.

Создает список изображений внутри ссылок.По какой-то причине он отображает только первое изображение и ссылку, а не остальные.

Я попытался поменять положение функции .show(); и добавить ее в последний оператор if else, и это неЭто тоже не работает.

Это все сделано для того, чтобы остановить отображение списка изображений и ссылок до того, как сработает функция .jshowoff();.

Так что у меня нет идей.Кто-нибудь может помочь?

// hide banners to begin with
$ ('.jshowoff-link').hide();

// this function wraps the elements in the neccessary tags to work with anything Slider
$ (document).ready(function() {
    $('a.jshowoff-link')
        .wrap('<li class="jshowoff-slide"></li>');
    $('li.jshowoff-slide')
        .wrapAll('<ul id="jshowoff"></ul>');
    // figures out if there's more than one <li> being produced
    if (banners.length > 1) {
        // if so, build the jshowoff
        $('#jshowoff').jshowoff({speed:7000, changeSpeed:1000, autoPlay:true, controls:true, links:true, animatePause:false, hoverPause:false });
        }
    else {
        // if not, disable the function
        $('#jshowoff').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
    $('.jshowoff-link').show();
    return false;
    }); 

1 Ответ

1 голос
/ 11 января 2011

Проблема в следующем: при запуске 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;
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...