这就是我想要的......
点击名为'bd'的div>检查id为“ump”的div是否具有“active”类> 如果确实如此,请使用'brandDump'等级获取div并慢慢向上滑动,隐藏它,并删除“active”>类。否则,将div与class'brandDump'一起使用并向下滑动,显示它,然后添加“active”类
点击div.bd后什么也没发生。我究竟做错了什么?
小提琴链接和代码如下。
<div class="bd">cool</div>
<div class="brandDump" id="ump">works</div>
<div>shape</div>
.brandDump {
background-color:#fff;
width:100px;
display:none;
}
.bd {
width:100px;
height:100px;
background-color:#000;
}
$(".bd").click(function () {
if ("#ump".hasClass("active")) {
$(".brandDump").slideUp("slow");
$(".brandDump").hide();
$(".brandDump").removeClass("active");
} else {
$(".brandDump").slideDown("slow");
$(".brandDump").show();
$(".brandDump").addClass("active");
}
});
答案 0 :(得分:2)
您需要在slideUp完成时使用回调。
$(".bd").click(function () {
if ($("#ump").hasClass("active")) {
$(".brandDump").slideUp("slow", function () {
$(".brandDump").removeClass("active");
});
} else {
$(".brandDump").slideDown("slow", function () {
$(".brandDump").addClass("active");
});
}
});
还有一个错误(“#ump”)...应该是$(“#ump”)
答案 1 :(得分:1)
问题是你有:
"#ump".hasClass(...
......你什么时候应该:
$("#ump").hasClass(...
但请注意,.slideUp()
和.slideDown()
方法会隐藏并显示您的元素,因此您也无需调用.hide()
和.show()
。如果你希望它们在同一个元素上运行,那么将jQuery方法链接在一起会更有效:
$(".bd").click(function () {
if ($("#ump").hasClass("active")) {
$(".brandDump").slideUp("slow")
.removeClass("active");
} else {
$(".brandDump").slideDown("slow")
.addClass("active");
}
});
演示:http://jsfiddle.net/K2V8f/50/
“检查id为'ump'的div是否具有'active'类&gt;如果是,请使用'brandDump'类获取div并慢慢向上滑动”
ID为ump
的div与相同的 div与类brandDump
的div相同。我不确定你为什么要谈论它们,就好像它们是两个不同的div一样,实际上你的代码似乎可以交替使用#ump
和.brandDump
选择器来选择一个div,但是如果你将它们视为一个更强的,你可以将你的功能降低到一行:
$(".bd").click(function () {
$(".brandDump").slideToggle("slow").toggleClass("active");
});