我创建了一个水平的元素列表。该列表具有固定宽度并在溢出时滚动。当一个按钮被点击时,一个新元素被添加到这个列表中,我试图将 ul 元素滚动到这个新创建的 li 元素。
这是我正在使用的 JQuery:
var ul = $('ul')
$('button').click(function() {
var li = $('<li></li>');
ul.append(li);
ul.stop().animate({
scrollLeft: li.offset().left
}, 2000);
});
奇怪的是,如果您开始跟踪变量li.offset().left
,前几个元素的值几乎保持相同,并且滚动工作正常,直到li.offset().left
小于ul.scrollLeft()
最大值。
你可以在这里看到这个:http: //jsfiddle.net/ePrwZ/16/
看起来正在发生的事情是li.offset().left
当我需要它相对于父 ul 元素时跟踪相对于文档的位置。但是由于溢出,我不能仅仅减去父母的节日。关于如何计算这个的任何想法?
注意:我想滚动到特定元素而不仅仅是 ul 的末尾。