3

ここから JQuery Multiselect プラグインを使用しています: http://www.erichynds.com/blog/jquery-ui-multiselect-widget

オプションのリストが長い場合、スクロールが表示されますが、選択したオプションまで自動的にスクロールされません。つまり、50 番目のオプションを選択した後で、51 番目のオプションを選択したい場合は、もう一度下まで検索する必要があります。

この問題を解決する方法を知っていますか? scrolltTop を使用しようとしましたが、うまくいきませんでした。

コードはとてもシンプルです...

$(function(){
   $("select").multiselect({multiple: false, selectedList: 1});
});

この問題を抱えた jsfiddle は次のとおりです: http://jsfiddle.net/g5r92/1/

よろしくお願いします。

4

3 に答える 3

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);
   });    

  });

ニーズに合わせるだけでよく、オフセットに余分なピクセルを追加すると、選択したオプションが一番上ではなく中央にスクロールされます

于 2013-06-12T15:51:34.917 に答える
0

「jQuery MultiSelect UI Widget 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 (複数 + 単一リスト) でテスト済み

于 2015-06-03T07:13:30.190 に答える
0

あなたは正しいです、それは確かに機能します。私の問題は、同じページに複数の複数選択があるため、offset().top が最初の複数選択を除くすべての複数選択で常にゼロだったためです (最初の複数選択がゼロではないことに気づきませんでした... )。これで解決:

$('.ui-multiselect-checkboxes').scrollTop($($('.ui-multiselect-checkboxes .ui-state-active')[index]).offset().top);

index は、ページ内の複数選択のインデックスです。

どうもありがとう!

于 2013-06-14T07:47:09.157 に答える