我正在使用JQuery Multiselect插件:http://www.erichynds.com/blog/jquery-ui-multiselect-widget
如果选项列表很长,则会显示滚动,但不会自动滚动到所选选项。这意味着,在选择第50个选项后,如果我想选择第51个选项,我必须再次搜索。
您知道如何解决这个问题吗?我尝试使用scrolltTop但没有运气。
代码非常简单......
$(function(){
$("select").multiselect({multiple: false, selectedList: 1});
});
这是一个解决这个问题的问题:http://jsfiddle.net/g5r92/1/
提前多多感谢。
答案 0 :(得分:2)
看看这个,第一次尝试,它正常工作
$(function(){
$("select").multiselect({multiple: false, selectedList: 1});
$('.ui-multiselect').click(function(){
$('.ui-multiselect-checkboxes').animate({
scrollTop: $(".ui-multiselect-checkboxes .ui-state-active").offset().top
}, 2000);
});
});
你只需要满足你的需要,在偏移处添加一些额外的像素,它将在中间滚动选定的选项而不是顶部
答案 1 :(得分:0)
你是对的,确实有效。我的问题是因为我在同一页面中有多个多选项,因此对于除第一个之外的任何多选项,offset()。top总是为零(我没有注意到第一个不是零... )。解决了这个:
$('.ui-multiselect-checkboxes').scrollTop($($('.ui-multiselect-checkboxes .ui-state-active')[index]).offset().top);
其中index是页面中多重选择的索引。
非常感谢!
答案 2 :(得分:0)
我建议,编辑你的" jQuery MultiSelect UI小工具 1.12 " JS文件, 到"自动选择"打开菜单选项时。
在您的文件上 ,搜索:(始终选择第一项)
this.labels.eq(0).trigger('mouseover').trigger('mouseenter').find('input').trigger('focus');
并将其更改为:(动态选择):
var idxSelected = 0;
if (o.multiple == true){
// find first checked.
idxSelected = $container.find('input[type=checkbox]:checked:first').parent().parent().index();
}
else {
// find the one that checked
idxSelected = $container.find('.ui-state-active:first').parent().index();
}
idxSelected = idxSelected < 0 ? 0 : idxSelected ;
this.labels.eq(idxSelected).trigger('mouseover').trigger('mouseenter').find('input').trigger('focus');
在FF + CHROME + IE上测试(在多个+单个列表中)