我同意Adrian的说法,那并不是一个问题。但是你说得对:当使用任何显示/隐藏元素的功能(例如show、hide、toggle、fadeOut等)时,jQuery会对显示属性进行非常简单的翻译。
说实话,我从来没有理解过他们这么做的原因(直接将显示设置为更简单)。
isShown ? '' : 'none';
与其使用他们自己的逻辑,我们可以采用以下方式:
isShown ? 'block' : 'none';
他们对他们所做的一切都有理由,所以我想他们在设置错误的显示类型时有一些逻辑。
*编辑*
正如我所料,jQuery开发团队有他们的原因(请参见 jfriend00 的评论); 现在问题实际上是一个问题:
如何使 fadeIn()结果为display:inline?
答案是您需要查看 fadeIn 如何工作; 本质上只是:
this.animate({opacity: "show"}, speed, easing, callback );
换句话说,它大致等同于:
this.animate({opacity: '100%'}, speed, easing, function() {
this.css('display', 'block')
});
(警告:我实际上不是jQuery动画功能的重度用户,因此虽然上面的代码应该可以工作,但我不能保证。)
鉴于此,如果您想将显示设置为其他内容(例如'inline'
),可以执行以下操作:
this.animate({opacity: '100%'}, speed, easing, function() {
this.css('display', 'inline')
});