【发布时间】:2015-07-16 07:51:35
【问题描述】:
我有一个要求,当所选项目位于容器的顶部折叠时,我需要将所选项目从容器中的项目列表冻结到顶部。当所选项目处于容器的底部折叠时,我需要将其粘在底部。
如果所选项目在可见折叠中,则不会发生任何事情。我的意思是所选项目应该与其他相邻项目正常流动。
我在某种程度上设法解决了这个问题。但是当我向上滚动时,当所选项目粘贴在容器上方时,所选项目被隐藏。即使当我向下滚动时,当所选项目粘在容器底部时,也会发生这种行为。
$('.item').click(function () {
$('.item').removeClass('select').removeClass('pAbsolute');
$(this).addClass('select');
});
$('.parent').scroll(function () {
var $selected = $('.item.select');
var cTop = $selected.offset().top;
var cHeight = $selected.height();
var pHeight = $(this).height();
if (cTop < 0) {
$selected.css({
'top': $(this).scrollTop(),
'bottom': ''
}).addClass('pAbsolute');
} else if (cTop > pHeight - cHeight) {
$selected.css({
'bottom': -$(this).scrollTop(),
'top': ''
}).addClass('pAbsolute');
} else {
$selected.css({
'top': '',
'bottom': ''
}).removeClass('pAbsolute');
}
});
【问题讨论】:
-
您可以选择多少个项目?您的小提琴显示了两个“已选择”的元素(1 和 22)。
-
@JackPattishall 一次只有一个。 我更新了小提琴(这是一个错误)
标签: javascript jquery html css scroll