隐藏() vs 隐藏( "slow" )



我需要隐藏一个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就不会出现。使用隐藏(1000)时也有同样的问题。

使用和不使用"慢速"参数的隐藏之间有区别吗?

谢谢,Andrea

来自官方网站

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

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

因此,如果不延迟地使用隐藏,它会立即隐藏而不设置动画,例如poof。

如果它随着时间的推移而使用,它就会变为动画,因此它会随着时间的流逝而消失。

对于您的问题,如果没有相应的html代码,很难进行判断。

$(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"
});

根据jQuery文档

可以提供字符串"fast"one_answers"slow"来指示分别为200和600毫秒。

还可以向其提供以毫秒为单位的持续时间。

最新更新