我已将不同博客的代码复制到我的小提琴帐户中。一切都很好。当您向下滚动页面时,页面上会出现黄色条,当您滚动到底部时,页脚会将黄色条向上推,这绝对没问题。但问题是,当我通过单击“添加”按钮添加文本框超过10到15次时,黄色条与页脚重叠,文本框在浏览器窗口内部下方并且不可见。我希望页脚将黄色粘条向上推,即使它的高度很小或很大。任何人都可以帮我解决问题吗?
Demo is here http://jsfiddle.net/awaises/k7xfc/
Jquery的
$window = $(window),
$sidebar = $(".sidebar"),
sidebarTop = $sidebar.position().top,
sidebarHeight = $sidebar.height(),
$footer = $(".footer"),
footerTop = $footer.position().top,
$sidebar.addClass('fixed');
$window.scroll(function(event) {
scrollTop = $window.scrollTop(),
topPosition = Math.max(0, sidebarTop - scrollTop),
topPosition = Math.min(topPosition, (footerTop - scrollTop) - sidebarHeight);
$sidebar.css('top', topPosition);
});
$(document).ready(function () {
var counter = 2;
$("#addButton").click(function () {
$('<div/>',{'id':'TextBoxDiv' + counter}).html(
$('<label/>').html( 'Textbox #' + counter + ' : ' )
)
.append( $('<input type="text">').attr({'id':'textbox' + counter,'name':'textbox' + counter}) )
.appendTo( '#TextBoxesGroup' )
counter++;
});
});
答案 0 :(得分:0)
阻止预期结果的主要问题是您的代码使用初始计算的侧边栏高度,而不是在每个滚动事件期间获取更新的高度。
$window.scroll(function (event) {
var scrollTop = $window.scrollTop();
var topPosition = Math.max(0, sidebarTop - scrollTop);
// Ensure you are using the current sidebar height and not the initial height
topPosition = Math.min(topPosition, (footerTop - scrollTop) - $sidebar.height());
$sidebar.css('top', topPosition);
});
我建议的另一个建议是在addButton
点击处理程序中触发窗口滚动处理程序,以确保在添加项目时进行适当的调整。
$("#addButton").click(function () {
$('<div/>', {
'id': 'TextBoxDiv' + counter
}).html(
$('<label/>').html('Textbox #' + counter + ' : '))
.append($('<input type="text">').attr({
'id': 'textbox' + counter,
'name': 'textbox' + counter
})).appendTo('#TextBoxesGroup');
// Trigger the scroll handler to ensure the sidebar is properly positioned
$window.triggerHandler('scroll');
counter++;
});
<强> DEMO 强>