那里。我在弹出窗口中有一个项目列表(用户)。此列表位于可滚动的div中。 我想创建一个搜索框,使用jQuery和Javascript计算出的位置 此列表中的所需用户,然后滚动到它。基本上,这就是我想要的:
function goToUser(userName) {
var userPosition = getPosition(userName);
$('#myContainer').scrollTop(userPosition);
}
function getPosition(userName){
// ?????
}
之前有人遇到过这样的问题吗?谢谢。
这是我用于弹出窗口的部分视图:
@using (@Html.BeginForm())
{
<div class="popupTitle">
Choose user(s)
</div>
<div style="height: 400px; overflow: scroll" class="popupNotifications">
@foreach (var user in Model.Users)
{
<div>
<input id="Users-@user.id" name="targetIds" type="checkbox" value="@user.id" @if(Model.TargetIds != null && Model.TargetIds.Contains(user.id)){<text>checked="checked"</text>} />
<label for="Users-@user.id" style="cursor: pointer;">@user.name</label>
</div>
}
</div>
<div class="popupButtons">
<input type="button" class="button" value="Save" onclick="GetValues(Notifications_UsersPopupHolder)" />
<input type="button" class="button" value="Cancel" onclick="Cancel(Notifications_UsersPopupHolder)" />
</div>
}
答案 0 :(得分:1)
您是否尝试过$(element).scrollIntoView()
?
我认为你的代码看起来像这样(不需要getPosition函数):
function goToUser(userName){
$('div.popupNotifications input#' + username).closest('div').scrollIntoView();
}
答案 1 :(得分:0)
如果列表中的所有项目都是相同的高度,您可以按(索引+ 1)*项目的高度计算。
答案 2 :(得分:0)
您可以使用特定元素的offset().top
。
function goToUser(userName) {
var userPosition = getPosition(userName);
$('.popupNotifications').scrollTop(userPosition);
}
function getPosition(userName){
return $('.popupNotifications label:contains(' + userName + ')').offset().top;
}
答案 3 :(得分:0)
您可以为包含您的用户的元素指定一个ID或一些标识它的类(id =&#34; user1&#34;或class =&#34; user1&#34;)
然后你可以简单地使用
$('#elementcontainingusers').scrollTop($('#user1').position().top);