JQuery slideToggle显示类型

时间:2009-08-12 13:37:29

标签: jquery slidetoggle

我正在使用jQuery slideToggle来显示隐藏的表格行,但它将显示样式设置为阻止,我需要显示表格行。任何想法我怎么能做到这一点?

提前致谢

6 个答案:

答案 0 :(得分:5)

我找到了解决这个问题的方法 - 检查显示器是否已设置为阻止(如果元素已被切换显示),如果设置为所需的显示类型。

$('a.btn').on('click', function() {
    $('div.myDiv').slideToggle(200, function() {
        if ($(this).css('display') == 'block') $(this).css('display', 'table-row'); // enter desired display type
    });
});

答案 1 :(得分:3)

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');
                }
            }
        });

答案 2 :(得分:2)

您可以使用回调来更改此

$('#tableRowId').slideToggle( function(){
   $(this).css('display', 'table-row');
});

答案 3 :(得分:0)

这是一个众所周知的bug(也是here)。使用jQuery slideToggle。没有任何方法可以使用slideToggle并正确保留显示样式。您可以在动画完成时使用回调应用显示样式,但这可能无法达到您想要的效果。

答案 4 :(得分:0)

只需将此代码添加到回调函数

即可

$(this).css('display','');

答案 5 :(得分:0)

只需在CSS中将其默认设置为

.block { display: table }

然后在加载页面时可以将其向上滑动

$(document).ready(function () {
    $('.btn').click(function(){
         $('.block').slideToggle();
    })
    $('.block').slideUp();
});

下次滑动时,它会显示display:table。