使用jquery隐藏包装器中的元素

时间:2014-02-14 06:59:10

标签: jquery

当点击的目标位于“multiselect Wrapper”div元素之外时,我需要关闭'multiselect PopUp'无序列表元素。

 <div class="multiselectWrapper">
    <input type="text" class="multiselectTextBox"/>
    <ul class="multiselectPopUp">
      <li>One</li>
      <li>Two</li>
    </ul>
 </div>

 <script type="text/javascript">

    $(function () {

        $('.multiselectPopUp').hide();
        $(document).click(function (e) {
            debugger;
            if ($(e.target).is('.multiselectTextBox')) {
                $('.multiselectPopUp').show();
            }
            else if(// Plese provide me selector logic here){                   
                $('.multiselectPopUp').hide();
            }
        });
    });

 });

4 个答案:

答案 0 :(得分:1)

试试这个:

$(document).ready(function () {
        $('.multiselectPopUp').hide();
        $(document).click(function (e) {
            if ($(e.target).is('.multiselectTextBox')) {
                $('.multiselectPopUp').show();
            }
            else if($(e.target).closest('.multiselectWrapper').length === 0){                   
                $('.multiselectPopUp').hide();
            }
        });
    });  

<强> JSFIDDLE DEMO

答案 1 :(得分:0)

您可以在此上下文中使用.closest()来确定目标是否是.multiselectWrapper的后代。

尝试,

if ($(e.target).is('.multiselectTextBox')) {
     $('.multiselectPopUp').show();
}
else if($(e.target).closest('.multiselectWrapper').length === 0){                   
     $('.multiselectPopUp').hide();
}

答案 2 :(得分:-1)

Jquery的

$('ul.class').hide();

$('ul.class').css('display','none');

答案 3 :(得分:-1)

 <div class="multiselectWrapper">
         <input type="text" class="multiselectTextBox"/>
         <ul class="multiselectPopUp">
           <li>One</li>
           <li>Two</li>
        </ul>
   </div>

   <script type="text/javascript">

  $(function () {

    $('.multiselectPopUp').hide();
    $(document).click(function (e) {
        debugger;
        if ($(e.target).is('.multiselectTextBox')) {
            $('.multiselectPopUp').show();
        }
        else if ($(e.target).is('.multiselectPopUp') || $(e.target).is('.multiselectPopUp > li')) { 
            $('.multiselectPopUp').show();
       }
       else {
           $('.multiselectPopUp').hide();
       }
    });
 });