Jquery Hide () и Show() не работают-крайне разочарован


У меня есть такой HTML

<div id="topContainer">
 <div id="level1" style="display:none;"> </div>
 <div id="level2" style="display:none;"></div>
</div>

Я могу получить level1 и level2, вызывая show() и hide() на них успешно. Однако, имея style= " display: none;"и затем вызывая jQuery ("#topContainer").show() делает нада. : (

Что может быть не так?

JS ниже

//LOGIC HERE THAT SHOWS LEVEL1 and LEVEL2 based on business logic

//If neither div is shown (got a variable set to false, it set to true each time
//the business logic shows the div
//if variable is still false, then the below line runs
jQuery("#topContainer").hide()

Обновлено с таким количеством кода, как я могу.

3 2

3 ответа:

.show() и еще.hide() на родителя дети не влияют, если они скрыты, они остаются скрытыми...они управляются независимо.

Тем не менее, вы можете позвонить .show() о детях также, если это необходимо, например:

jQuery("#topContainer").show().children().show();

Интересно, является ли логика, чтобы скрыть #topContainer вызывает проблемы. Я настроил демо-версию здесь, чтобы показать полезность :empty но для того, чтобы элемент считался пустым, он не может содержать даже одного пробела (текстового узла).

С помощью предоставленного Вами HTML. Я настроил демонстрационную версию здесь... добавьте содержимое в div, затем повторно запустите сценарий, и вы увидите разницу.

var container = $('#topContainer'),
    divs = container.find('div'),
    empty = divs.filter(':empty');

if (divs.length == empty.length) {
    // hide container!
    $('#topContainer').hide();
    alert('hidden!');
} else {
    // don't do anything
    alert("don't hide!");
}

Работает ли $("#topContainer").css("display", "block");?

Работает ли $("#topContainer").css("background", "red");?

Вы возились с Firebug или чем-то еще, что может показать фактические свойства DOM до и после, наряду с каскадом правил.

Мое подозрение будет заключаться в том, что #topContainer получает display Набор через что-то другое, или еще есть другой div с #topContainer` ниже по странице (что было бы недопустимым HTML).