【发布时间】:2016-10-08 03:15:07
【问题描述】:
我需要在容器 div 中隐藏 .panel 类的所有 div。然后毕竟都被隐藏了,选择性地取消隐藏一些 .panel div。我尝试在 hide() 上使用回调,但回调针对每个隐藏的元素运行。在某些情况下,我最终会陷入几乎无限或长时间运行的循环,因为相同的 div 被隐藏并一遍又一遍地显示。
这不起作用,因为在隐藏完成之前显示第二个元素:
$("#detailsPanel").children(".panel").hide();
$("#membershipPanel").slideDown();
$("#specializationsPanel").slideDown();
如果我将这些步骤嵌套在回调中的隐藏之后,则回调会针对每个隐藏的 .panel div 运行。
完整代码
这是我的全部功能,如果这有助于找到我的逻辑缺陷。
function goWizard(step) {
switch (step) {
case 0:
$("#formPanel").hide();
$("#beginPanel").slideDown();
$("#instructionsPanel").slideDown().children().slideDown();
$("#loginPanel").slideDown().children().slideDown();
break;
case 1:
$("#beginPanel").hide().children().hide();
$("#stepTitle").text("Membership Category/Specialist Category :: Step 1 of 8");
$("html, body").animate({ scrollTop: 0 }, "slow");
$("#summaryPanel").slideDown().children().show();
$("#formPanel").slideDown();
var i = 0;
var $panels = $("#detailsPanel").children(".panel");
$panels.hide(function () {
i++;
if (i == $panels.length) {
$("#membershipPanel").show();
$("#specializationsPanel").show();
}
});
$("#startOverButton").show();
$("#prevStepButton").hide();
$("#nextStepButton").show();
$("#startOverButton").click(function () { goWizard(0); });
$("#nextStepButton").click(function () { goWizard(2); });
break;
case 2:
$("#beginPanel").hide().children().hide();
$("#stepTitle").text("Section Membership :: Step 2 of 8");
$("html, body").animate({ scrollTop: 0 }, "slow");
$("#summaryPanel").slideDown().children().show();
$("#formPanel").slideDown();
var i = 0;
var $panels = $("#detailsPanel").children(".panel");
$panels.hide(function () {
i++;
if (i == $panels.length) {
$("#sectionsPanel").show();
}
});
$("#startOverButton").hide();
$("#prevStepButton").show();
$("#nextStepButton").show();
$("#prevStepButton").click(function () { goWizard(1); });
$("#nextStepButton").click(function () { goWizard(3); });
break;
case 3:
$("#beginPanel").hide().children().hide();
$("#stepTitle").text("Insurance Compliance :: Step 3 of 8");
$("html, body").animate({ scrollTop: 0 }, "slow");
$("#summaryPanel").slideDown().children().show();
$("#formPanel").slideDown();
var i = 0;
var $panels = $("#detailsPanel").children(".panel");
$panels.hide(function () {
i++;
if (i == $panels.length) {
$("#insurancePanel").show();
}
});
$("#startOverButton").hide();
$("#prevStepButton").show();
$("#nextStepButton").show();
$("#prevStepButton").click(function () { goWizard(2); });
$("#nextStepButton").click(function () { goWizard(4); });
break;
default:
$("#beginPanel").slideDown();
$("#formPanel").hide();
break;
}
}
【问题讨论】:
-
hide().children().hide()and.slideDown().children().show();没有意义
标签: javascript jquery css