我试图在div中应用自动滚动。我有一个固定高度div下的元素列表,现在我希望当我按下第三个高亮元素(即Compt0005)div后自动滚动键。任何机构可以解决这个问题..在div元素溢出自动滚动
Demo
: - here
我试图在div中应用自动滚动。我有一个固定高度div下的元素列表,现在我希望当我按下第三个高亮元素(即Compt0005)div后自动滚动键。任何机构可以解决这个问题..在div元素溢出自动滚动
Demo
: - here
此代码通过.getBoundingClientRect()设置div的scrollTop的属性完全相同方法:
$(function() {
var liPossition = 0;
var items = $("#ulSearch li");
var divSearchContent = $("#divSearchContent");
divSearchContent.hide();
$("#txtSearch").keydown(function (e) {
if (e.keyCode == 13) { // if enter pressed
$("#txtSearch").val(items.eq(liPossition).text());
divSearchContent.hide();
return;
}
if (e.keyCode != 38 && e.keyCode != 40) { // // if not up or down arrow
return;
}
divSearchContent.show();
items.eq(liPossition).css("background-color", "");
if (e.keyCode == 40 && liPossition < items.length - 1) { // down arrow key code
liPossition++;
}
if (e.keyCode == 38 && liPossition > 0) { // up arrow key code
liPossition--;
}
items.eq(liPossition).css("background-color", "red");//[0].scrollIntoView(); return;
var b1 = divSearchContent[0].getBoundingClientRect();
var b2 = items.eq(liPossition)[0].getBoundingClientRect();
if (b1.top>b2.top) {
divSearchContent.scrollTop(divSearchContent.scrollTop()-b1.top+b2.top);
}
else if (b1.bottom<b2.bottom) {
divSearchContent.scrollTop(divSearchContent.scrollTop()-b1.bottom+b2.bottom);
}
});
});
变化
$("#ulSearch li:eq(" + liPossition + ")").css("background-color", "red")
每一次出现到
$("#ulSearch li:eq(" + liPossition + ")").css("background-color", "red")[0].scrollIntoView();
它的做工精细,但它滚动每个李,但我想滚动在这种情况下,它不会是简单的3件 –
后,你必须检查他是否元素在视图中或没有,然后还要滚动。 –
k精致谢谢.. –
不错的1这个答案对我来说更好一些 –
你也可以在点击而不是文本框时重置进程。 –
它显示错误在我的网页“无法调用方法'getBoundingClientRect'未定义” –