【发布时间】:2009-08-12 13:37:28
【问题描述】:
我正在使用 jQuery slideToggle 来显示隐藏的表格行,但它将显示样式设置为阻止,我需要显示表格行。有什么想法我可以做到这一点吗?
提前致谢
【问题讨论】:
标签: jquery slidetoggle
我正在使用 jQuery slideToggle 来显示隐藏的表格行,但它将显示样式设置为阻止,我需要显示表格行。有什么想法我可以做到这一点吗?
提前致谢
【问题讨论】:
标签: jquery slidetoggle
我想出了解决这个问题的方法 - 检查显示是否已设置为阻止(如果元素已切换为显示),如果设置为所需的显示类型。
$('a.btn').on('click', function() {
$('div.myDiv').slideToggle(200, function() {
if ($(this).css('display') == 'block') $(this).css('display', 'table-row'); // enter desired display type
});
});
【讨论】:
slidetoggle() 显示并隐藏,但是通过您的修改,它无法隐藏。
inorganik 的解决方案几乎奏效了。但是您还需要设置step 回调以将block 更改为table-row。
$('row-selector-here').slideToggle({
duration: 'fast',
step: function() {
if ($(this).css('display') == 'block') {
$(this).css('display', 'table-row');
}
},
complete: function() {
if ($(this).css('display') == 'block') {
$(this).css('display', 'table-row');
}
}
});
【讨论】:
flex 而不是table-row。我还必须添加另一个 if 子句来检测它何时将其设置为none,并将其设置为'',这样外部css 就可以在不被覆盖的情况下应用(jquery 直接在html 中与元素的css 混淆,它会在任何地方覆盖css ,除非使用了!important,我不想使用)。
你可以使用回调来改变这个
$('#tableRowId').slideToggle( function(){
$(this).css('display', 'table-row');
});
【讨论】:
slideToggle() 显示和隐藏,这使它无法隐藏。在下面查看我的答案
只需将此代码添加到回调函数中
$(this).css('display','');
【讨论】:
你可以在css中将其默认为
.block { display: table }
然后在加载页面时可以向上滑动
$(document).ready(function () {
$('.btn').click(function(){
$('.block').slideToggle();
})
$('.block').slideUp();
});
下次它向下滑动时会显示:table。
【讨论】: