2016-06-14 5 views
1

リストが表示されているときにdivを添付しようとしているドロップダウンリストがあります。このために、私はイベントonDropdownShowonDropdownHideを持っています。 リストがロードされていなければ、divも消えます。表示されたリストの一番下にdivを表示/非表示するにはどうすればよいですか?何か案は?あなたがする必要がどのような開いている選択オプションの一番下にdivを動的に添付

enter image description here

参照

<script type="text/javascript" src='http://davidstutz.github.io/bootstrap-multiselect/dist/js/bootstrap-multiselect.js'></script> 
<link rel="stylesheet" href='http://davidstutz.github.io/bootstrap-multiselect/dist/css/bootstrap-multiselect.css'> 
<script type="text/javascript" src='https://github.com/nobleclem/jQuery-MultiSelect/blob/master/jquery.multiselect.js'></script> 

スクリプト

<script type="text/javascript"> 
    $(document).ready(function() { 
      $('#example-post-checkboxName').multiselect({ 
       enableFiltering: true, 
       enableClickableOptGroups: true, 
     enableCollapsibleOptGroups: true, 
     includeSelectAllOption: true, 
     onDropdownShow: function (select, container) { 
       //show div 
     }, 
     onDropdownHide: function (event) { 
      // hide div 
     } 
      }); 
    }); 
</script> 

HTML

<div class="form-group"> 
     <label class="col-sm-2 control-label">Multiselect</label> 
     <div class="col-sm-10"> 
      <div id="theParentx"> 
       <select id="example-post-checkboxName" name="multiselect[]" multiple="multiple" required> 
         <optgroup label="The group"> 
         <option>a</option> 
         <option>b</option> 
         <option>c</option> 
        </optgroup> 
       </select> 
       <div id="theChildx" class="testStyle"> 
        -> the attached div <- 
       </div> 
      </div> 
     </div> 
    </div> 
+0

'$( '#theChildx')非表示()' --- '$( '#theChildx')ショー()' – DaniP

+0

:。。これをチェックしてください確かに、大きな問題は、ロードされた '選択'リストの下部の座標を取得してそこにdivを表示することです。リストは動的なので長さは変わります。 – alwaysVBNET

+0

良い点...おそらくoptgroupの高さをチェックしていますか?あなたはjsfiddleで再作成できますか? – DaniP

答えて

1

は、そのdiv要素と位置が絶対的な設定されています複数選択の場合はheightsに基づいています。はい@DaniP

$(document).ready(function() { 
    $('#example-post-checkboxName').multiselect({ 
    onDropdownShow: function (select, container) { 
     var siz = parseInt($('#theParentx').height(),10) + parseInt($('#theParentx .multiselect-container').height(),10) + parseInt($('#theChildx').height(),10); 
     $('#theChildx').css('top',siz+"px").show(); 
    }, 
    onDropdownHide: function (event) { 
     $('#theChildx').hide() 
    } 
    }); 
}); 

DemoFiddle

+0

偉大な答え。しかし、幅はトップリストと同じではありません。どのように私はそれにも一致するだろうか? *私は参照のため早くフィドルを作成することができませんでした。 – alwaysVBNET

+1

@alwaysVBNET同じ方法では、multiselectの幅をvarに格納します。divに適用します。http://jsfiddle.net/bLXr6/22/ – DaniP

+0

これはすばらしい答えです。巨大な貢献。 – alwaysVBNET

関連する問題