jQuery .load предотвращает работу .hide и .show? - PullRequest
0 голосов
/ 23 декабря 2011

Так что я столкнулся со странной проблемой с jQuery. В основном у меня есть два элемента на странице - div, который загружает фрагмент страницы в дочерний div с помощью .load () (#optionOne в приведенном ниже примере) и другой div со статическим содержимым (#optionTwo). Всякий раз, когда вызывается функция (каждые 10 секунд или около того), она случайным образом выбирает одну или другую для показа () или скрытия (). Вот JavaScript:

    var editableOrSocial = Math.floor(Math.random()*2);     
    if (editableOrSocial == 0) {
        $j('#optionTwo').hide();
        $j('#optionOne').show();
        $j('.thecontent').load('http://www.example.com/ .post-content', function() { });
    }
    else {
        console.log('else called!');
        $j('#optionOne').hide();
        $j('#optionTwo').show();
    }

Теперь это работает отлично, если я удаляю .load (). Он будет переключаться вперед и назад, показывать и скрывать каждый div соответствующим образом. Однако, как только я добавляю .load (), он «застревает» в этой опции. Даже если вызывается else, он на самом деле не показывает и не скрывает ни один div (отсюда и небольшое отладочное сообщение «else вызвано!» ... Я хотел убедиться, что оно работает).

Кто-нибудь сталкивался с этой проблемой раньше? Является ли .load () как-то переопределяющим? Я в замешательстве.

РЕДАКТИРОВАТЬ: Неважно, просто понял это сразу после того, как я опубликовал это. Изменение этого:

        $j('.thecontent').load('http://www.example.com/ .post-content', function() { });

к этому

        $j('#optionOne .thecontent').load('http://www.example.com/ .post-content', function() { });

исправил это. Однако мне все равно было бы интересно понять, почему это произошло. Я предполагаю, что это может быть связано с загрузкой, вызывающей состояние отображения?

...