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 ответа:
Интересно, является ли логика, чтобы скрыть
#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).