我的目标slideToggle() div在打开时需要display:inline-block
而不是display:block
。有没有办法在这里改变jquery行为?
编辑:
我现在正在使用jQuery 1.7.0。此外,<div>
最初位于display:none
,点击链接后应扩展为display:inline-block
;但显然这种情况下slideToggle()的默认状态是display:block
...
答案 0 :(得分:48)
一只小鸟告诉我......
$('#my-block').slideToggle('medium', function() {
if ($(this).is(':visible'))
$(this).css('display','inline-block');
});
答案 1 :(得分:11)
尝试通过脚本隐藏您的块(不要display:none
通过样式)
HTML
<div class="ib">inline-block</div> <a href="#" class="toggle">toggle this</a>
CSS
.ib{
display:inline-block;
background:red;
}
的JavaScript
$(".ib").hide();
$(".toggle").bind("click", function(){
$(".ib").slideToggle();
return false;
})
答案 2 :(得分:4)
如果您发现自己看到了不受欢迎的“无格式内容Flash”,您也可以使用内联样式。 “不要把风格内联”的通常智慧真正意味着你的主要风格,而不是视觉效果(JS效果毕竟只是添加内联样式)。
当然,如果这一点非常重要,JS禁用的搜索引擎蜘蛛就不会看到这些内容。如果它不重要,那你很好!
更新@ fliptheweb的小提琴:http://jsfiddle.net/GregP/pqrdS/3/
答案 3 :(得分:4)
我需要 display:flex 来对具有 order 属性的元素进行重新排序。 更改为 display:flex 可以,但是必须等待动画完成才能重新排列元素,因此有一瞬间,所有内容看上去都明显混乱了。
使用开始选项(see doc)对我来说是什么窍门:
$("your-selector").slideToggle({
duration: 200,
easing: "easeOutQuad",
start: function() {
jQuery(this).css('display','flex');
}
});
答案 4 :(得分:2)
你是旧版本的jQuery吗?这应该已经修复,请参见此处的讨论: