我在jQuery中遇到一些隐藏/显示功能的问题,我似乎无法弄明白。我有一个if / else语句,它检查我的HTML中的数据属性,然后根据它的结果隐藏/显示元素。我已经能够记录整个功能,并且它应该触发正确的语句,但我遇到的问题是让内容在隐藏后再次出现。它隐藏得很好,但永远不会回来。这是代码:
var bar = $("#alert");
if (!supressed) {
bar.animate({height:0});
bar.parent().animate({height:0}, function() {
$(this).hide()
});
}
if (supressed) {
console.log("Supressing");
bar.replaceWith(newBar);
bar.parent().animate({height: "45px"}, function() {
$(this).show()
});
bar.animate({height: "45px"});
}
问题出现在console.log("Supressing");
语句的位置。它将它记录到控制台,所以我知道它正在工作,但由于某种原因,条形图根本没有出现。
如果我执行检查元素,我仍然可以看到#alert
的父级仍然有style="height: 0px; display: none;"
。
我哪里错了?
答案 0 :(得分:0)
问题是您使用replaceWith函数(else
语句后的第一行)。然后在从DOM中删除元素后调用bar.parent()。
也许你想说
newBar.parent().animate({height: "45px"}, function() {
$(this).show()
});