Jquery 是否将slideToggle()行为更改为显示:内联块而不是显示:块?

Jquery 是否将slideToggle()行为更改为显示:内联块而不是显示:块?,jquery,css,slidetoggle,Jquery,Css,Slidetoggle,打开时,我的目标div需要是display:inline block,而不是display:block。有没有办法改变jquery的行为 编辑: 目前我正在使用jQuery1.7.0。另外,最初位于显示:无,点击链接后应扩展至显示:内联块;但显然,在这种情况下,slideToggle()的默认状态是display:block 您使用的是旧版本的jQuery吗?这应该已经解决了,请参见此处的讨论: 只需尝试通过脚本隐藏块(不要通过样式显示:无) HTML JavaScript $(".ib").h

打开时,我的目标div需要是
display:inline block
,而不是
display:block
。有没有办法改变jquery的行为

编辑:


目前我正在使用jQuery1.7.0。另外,
最初位于
显示:无
,点击链接后应扩展至
显示:内联块
;但显然,在这种情况下,slideToggle()的默认状态是
display:block

您使用的是旧版本的jQuery吗?这应该已经解决了,请参见此处的讨论:


只需尝试通过脚本隐藏块(不要通过样式显示:无)

HTML

JavaScript

$(".ib").hide();
$(".toggle").bind("click", function(){
    $(".ib").slideToggle();
    return false;
})

如果你发现自己看到了不需要的“未格式化内容的闪现”,你也可以使用内联样式。“不要把样式放在内联”这句话通常是指你的主要样式,而不是视觉效果(JS效果毕竟只是添加内联样式)

当然,内容不会被禁用JS的搜索引擎蜘蛛看到,如果这很重要的话。如果这不重要,你就很好

更新@fliptheweb的小提琴:

一只小鸟告诉我

我需要display:flex来重新排序具有order属性的元素。 更改为显示:flex工作了,但它必须等待动画完成才能重新排列元素,因此有一段时间,所有内容看起来都很混乱

我的诀窍是使用start选项():


谢谢,但我不认为这个错误适用于这里-请参阅我的编辑。我明白了。在这种情况下,我建议使用@fliptheweb的解决方案
$(“#我的块”).slideToggle('medium',function(){if($(this).is(':visible'))$('this').css('display','inline-block');})小编辑。实际上,将#元素的CSS设置为
display:inline block更容易(在块或样式表中)和
显示:无作为字段的样式属性。然后,当它切换到可见时,它只需要定义默认样式我知道这是非常死板的,但是有人可以更深入地解释@K.Weber的评论吗?这意味着使用
display:none
作为内联样式属性,这是,
,并在css样式表中设置默认样式(
display:inline block
),这样,
.slideToggle()
,当元素变为可见时,将采用样式表中定义的默认样式(
display:inline block
)@K.Weber一旦DOM(例如,模式窗口)用FadeToggle关闭,这就不起作用了我最喜欢这个答案,唯一的问题是使用ID而不是类。hide()对类非常有效!非常感谢。这对我来说非常有效,尽管在开场动画结束前有一点内容跳跃。比在页面加载时关闭所有幻灯片动画更令人满意,+1!工作完美。谢谢你!
.ib{
    display:inline-block;
    background:red;
}
$(".ib").hide();
$(".toggle").bind("click", function(){
    $(".ib").slideToggle();
    return false;
})
$('#my-block').slideToggle('medium', function() {
    if ($(this).is(':visible'))
        $(this).css('display','inline-block');
});
$("your-selector").slideToggle({
  duration: 200,
  easing: "easeOutQuad",
  start: function() {
    jQuery(this).css('display','flex');
  }
});