我的目标是一种特定类型的菜单,它分为四个部分,您可以通过单击部分标题来打开和关闭它们。这是我到目前为止所做的:http://jsfiddle.net/samuliviitasaari/Ya8P8/9/
除了当你已经打开一个菜单部分,然后单击另一个部分标题时,它的工作方式与我想要的完全相同。我希望等到该部分关闭然后再打开另一部分;现在一切都在发生,导致一些非常难看的闪烁。
我的问题是,我是否必须使脚本具有自我意识和#39; (=能够知道特定部分是否打开)或者是否有快速方法使slideToggle自动等待,直到已打开的部分(如果有)已关闭。当然,如果目前没有任何部分开放,请直接前进,没有延迟?
目前,核心代码相当粗糙,试图关闭所有其他部分以防万一他们是否实际开放:
$("#one").click(function () {
$("#toggleone").slideToggle(100);
$("#toggletwo").slideUp(100);
$("#togglethree").slideUp(100);
$("#togglefour").slideUp(100);
});
PS。如果您有关于如何使代码更加雄辩的任何其他提示,我将不胜感激!
答案 0 :(得分:3)
尝试:
我已将toggle
类添加到#toggleone,toggletwo,togglethree,togglefour
div。
$(".toggle").hide();
$("#one,#two,#three,#four").click(function () {
var id = $(this).attr("id");
if ($("#toggle" + id).is(":visible")) {
$("#toggle" + id).slideToggle();
} else {
if ($(".toggle:visible").length > 0) {
$(".toggle:visible").slideUp(function () {
$("#toggle" + id).slideToggle(200);
});
} else {
$("#toggle" + id).slideToggle();
}
}
});
答案 1 :(得分:1)
在代码中使用.delay()
等待一方发生