我在带有li元素的div中有一个ul列表,而li元素里面是一个复选框。我有复选框的ID。所以我想获得复选框的父li元素并滚动到它的位置。我无法使其发挥作用。
我的HTML是这样的:
<div id="divElement">
<ul>
<li>
<input type="checkbox" id="343532532523" />
</li>
</ul>
</div>
我尝试了这两种方法,它们对我不起作用:
$('#divElement').scrollTop($('#343532532523').parent().position().top);
$('#divElement').firstChild().scrollTop($('#343532532523).parent().position().top);
答案 0 :(得分:8)
如果有人需要一个香草JS版本,以下对我来说效果很好,50的值只是为了让我在列表顶部附近显示整个项目。你可以调整它。
function updateListSelection(liID) {
var list = document.getElementById("id Tag Of The <UL> element"),
targetLi = document.getElementById(liID); // id tag of the <li> element
list.scrollTop = (targetLi.offsetTop - 50);
};
答案 1 :(得分:3)
我让我的另一个开发朋友帮助我,我们想出了这个,它有效,没有动画,我能做到,我只是不需要它..
var offset = $('#someDivElementId ul li').first().position().top;
$('#someDivElementId').scrollTop($('#23532532532532').parent().position().top - offset);
答案 2 :(得分:1)
我使用Element.scrollIntoView()方法解决了这个问题:
https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView
它适用于Chrome,Firefox和Internet Explorer - 我还没有在其他任何浏览器中测试过它。
答案 3 :(得分:1)
老问题,但是这里是一个纯粹的js函数,它将LI滚动到顶部的视图中,如果它当前在顶部之上,在底部,如果它当前在底部之下。如果使用向下和向上箭头滚动它,则可以平滑滚动UL(使用addEventListener进行keydown和keyup事件)。
function scrollUL(li) {
// scroll UL to make li visible
// li can be the li element or its id
if (typeof li !== "object"){
li = document.getElementById(li);
}
var ul = li.parentNode;
// fudge adjustment for borders effect on offsetHeight
var fudge = 4;
// bottom most position needed for viewing
var bottom = (ul.scrollTop + (ul.offsetHeight - fudge) - li.offsetHeight);
// top most position needed for viewing
var top = ul.scrollTop + fudge;
if (li.offsetTop <= top){
// move to top position if LI above it
// use algebra to subtract fudge from both sides to solve for ul.scrollTop
ul.scrollTop = li.offsetTop - fudge;
} else if (li.offsetTop >= bottom) {
// move to bottom position if LI below it
// use algebra to subtract ((ul.offsetHeight - fudge) - li.offsetHeight) from both sides to solve for ul.scrollTop
ul.scrollTop = li.offsetTop - ((ul.offsetHeight - fudge) - li.offsetHeight) ;
}
};
答案 4 :(得分:0)
有趣的怪癖:
window.location.href = window.location.origin+window.location.pathname+window.location.search+"#343532532523"
它的作用是获取url部分并使用实际锚点将其设置回元素
如果您的网站不是网络应用程序,可能适用于大多数情况=)
编辑:现代浏览器中没有往返,更改URL的唯一部分是锚点。我对不作为webapp的考虑是这些网站通常编辑锚和历史。
答案 5 :(得分:0)
这是一个简单的演示,使用jQuery position()
获取父UL中的LI位置,然后使用animate()
滚动视图中的复选框
API参考:
http://api.jquery.com/position/ http://api.jquery.com/animate/
答案 6 :(得分:0)
promptAnswerBlock - &gt; ul元素ID
$(&#39;#promptAnswerBlock&#39;)。scrollTop($(&#39;#promptAnswerBlock&#39;)[0] .scrollHeight + 150);
150只是一个偏移值
您可以根据您的要求进行调整