Jquery Multiselect不会滚动到所选选项

时间:2013-06-12 14:57:07

标签: javascript jquery scroll multi-select

我正在使用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/

提前多多感谢。

3 个答案:

答案 0 :(得分:2)

看看这个,第一次尝试,它正常工作

http://jsfiddle.net/g5r92/7/

 $(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上测试(在多个+单个列表中)