hide()vs hide(“slow”)

时间:2012-11-27 17:17:26

标签: javascript jquery html

我需要隐藏div,使用此代码可以正常工作:

    var idObj = $(this).attr('key');
var valH = $(this).attr('hideval');
var valS = $(this).attr('showval');

if ($('div[name='+idObj+']').attr('isdisplay') == 'no') {
    $('div[name='+idObj+']').children().show("slow");
    $('div[name='+idObj+']').attr('isdisplay','yes');
    var divTitle = $('div[name='+idObj+']').children().first();
    var divArrow = $(this).children().first();
    //.attr('src',prefixImg+valH);

    //divTitle.show();
    //divArrow.show();
    $(this).children().first().attr('src',prefixImg+valH);
} else {

    var divTitle = $('div[name='+idObj+']').children().first();
    var divArrow = $('div[name='+idObj+']').children().last();
    //.attr('src',prefixImg+valS);

    $('div[name='+idObj+']').children().hide();
    $('div[name='+idObj+']').attr('isdisplay','no');

    divTitle.show();
    divArrow.show();
    $(this).children().first().attr('src',prefixImg+valS);
}

隐藏了我的div,并显示了重新打开div的标题和箭头。但是如果我尝试使用hide(“slow”),当div关闭时divTitle和divArrow就不会出现。使用hide(1000)同样的问题。

使用和不使用“慢”参数隐藏是否存在差异?

感谢, 安德烈

3 个答案:

答案 0 :(得分:6)

来自官方网站

  

匹配的元素将立即隐藏,无动画。这大致相当于调用.css('display','none'),除了display属性的值保存在jQuery的数据高速缓存中,以便稍后可以将显示恢复到其初始值。如果元素的显示值为内联,则隐藏并显示,它将再次以内联方式显示。

     

当提供持续时间时,.hide()成为动画方法。 .hide()方法同时动画匹配元素的宽度,高度和不透明度。当这些属性达到0时,显示样式属性设置为none,以确保该元素不再影响页面的布局。

所以,如果使用hide没有延迟,它会立即隐藏而不会动画 - 例如,poof。

如果它与时间一起使用,它会变得生气勃勃,因此随着时间的推移它会消失。

对于你的问题,没有相应的html代码很难判断。

答案 1 :(得分:3)

$(element).hide()立即隐藏一个元素,其中$(element).hide('slow')将为其消失(慢慢地)设置动画。

看起来像(虽然我不确定)你想在动画完成后做的东西。在这种情况下,做这样的事情:

var that = this;  // here to preserve scope for the block below
$('div[name='+idObj+']').children().hide('slow', function() {

    // This stuff happens after the hide animation is done.
    $('div[name='+idObj+']').attr('isdisplay','no');

    divTitle.show();
    divArrow.show();
    $(that).children().first().attr('src',prefixImg+valS);  // <= note "that" instead of "this"

});

答案 2 :(得分:1)

根据jQuery文档

  

可以提供字符串'fast'和'slow'来表示持续时间   分别为200和600毫秒。

也可以提供持续时间(以毫秒为单位)..