这个有效:
使用
$(document.body).click(function () {
if ($("div:first").is(":hidden")) {
$("div").slideDown("slow");
} else {
$("div").slideUp("slow");
}
});
但是如果由于某种原因,该元素由某个框架(由Compass / Blueprint的display: block
制作)+clearfix
,那么
我用了
display: none !important
首先让它不显示在页面上,然后代码将无效。
我还尝试在调用$("div").css({display: 'block'});
之前添加$("div").css({display: 'block !important'});
甚至slideDown()
,但它也不起作用。
有解决方法吗?
答案 0 :(得分:1)
我会在您正在下滑的overflow: auto;
元素的父元素上使用<div>
,而不是您当前使用的clearfix解决方案。这不是一个脚本问题......而是一个风格问题。
顺便说一下,你的演示不是使用jsfiddle的合适方式,并且可能会引入一些错误......左上角的内容在呈现时已经在<body>
标记内。 Instead your examples should look like this(另请注意使用.slideToggle()
)。
答案 1 :(得分:1)
!important
为CSS规则提供无限特异性,您将无法覆盖它。
我建议不要在主页上绑定你的幻灯片行为,以达到你想要的效果。这也将使渐进增强众神高兴。
答案 2 :(得分:1)
因为!important
规则优先于所有内容!那个,以及当使用slide
函数时,jQuery会自动为元素提供非!important
样式display: block
,消灭你的display: block !important
并导致定义的样式在style
标记中优先使用。
简单的解决方法是不使用!important
。最难的是入侵jQuery源并在!important
中添加到已滑动元素的样式中。
答案 3 :(得分:0)
尝试修改高度:0首先删除属性样式并定期执行slideDown / slideUp。应该工作!
ie:selector.css('height','0')。attr('style','')。slideUp('slow')