Jquery Hide () и Show () не работает - чрезвычайно Frustated - PullRequest
2 голосов
/ 03 ноября 2010

У меня есть такой 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 () делает nada. (

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

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 ]

5 голосов
/ 03 ноября 2010

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

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

jQuery("#topContainer").show().children().show();
1 голос
/ 03 ноября 2010

Интересно, не вызывает ли проблема логика, чтобы скрыть #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!");
}
0 голосов
/ 03 ноября 2010

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

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

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

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

...