我有一个<ul>
列表有点长。当您展开(向下滑动)列表元素时,浏览器不会向下滚动,一切都没问题。当您收缩(向上滑动)该元素列表时,浏览器向上滚动将闪烁/闪烁A 批次,同时这样做。
以前有人有这个问题吗?如果是这样,我们可以做些什么来解决它?
以下是一个代码示例,以便更好地理解:
$('#btCatA').click(function() {
$('#btCatA').toggleClass('selec');
$('#listcatA').slideToggle('slow', function() {
// ...
});
});
答案 0 :(得分:1)
您可以通过将scrollTop
对象的window
属性降低到该元素的高度,然后向上滑动列表元素来阻止这种情况。 jQuery有一个方法:.scrollTop()
。你也可以为它制作动画,使它看起来不那么仓促。以下(未经测试的)代码应该可以解决问题:
var toggleClass = 'selec';
$('#btCatA').click(function() {
var target = $(this),
listElement = $('#listcatA');
if (target.hasClass(toggleClass)) {
target.removeClass(toggleClass);
$(window).animate({
scrollTop: '-='+listElement.height()+'px'
}, 'slow', function () {
listElement.slideUp('slow');
});
} else {
target.addClass(toggleClass);
listElement.slideDown('slow');
}
});