Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有jquery和HTML列表元素的样式化选择字段_Javascript_Jquery - Fatal编程技术网

Javascript 带有jquery和HTML列表元素的样式化选择字段

Javascript 带有jquery和HTML列表元素的样式化选择字段,javascript,jquery,Javascript,Jquery,我的样式选择字段有点问题。我用于这个无序列表元素UL/LI和H3 问题是通过单击页面上的任意位置来关闭Selectfield。 当我将click事件绑定到文档时,不要用当前jQuery代码打开SelectField 我使用CSS display:none隐藏了UL元素。 打开选择字段不是问题所在。但是只有在没有$document.bind'click'[…]代码的情况下才可以 我希望每个人都能为我的计划下一个决心。 谢谢 下面是我的HTML代码: <div class="select_co

我的样式选择字段有点问题。我用于这个无序列表元素UL/LI和H3

问题是通过单击页面上的任意位置来关闭Selectfield。 当我将click事件绑定到文档时,不要用当前jQuery代码打开SelectField

我使用CSS display:none隐藏了UL元素。 打开选择字段不是问题所在。但是只有在没有$document.bind'click'[…]代码的情况下才可以

我希望每个人都能为我的计划下一个决心。 谢谢

下面是我的HTML代码:

<div class="select_container">
   <h3 class="reset">Select Items</h3>
   <ul class="select_elements">
      <li>Select Item 01</li>
      <li>Select Item 02</li>
      <li>Select Item 03</li>
   </ul>
</div>
您需要在$'中使用.stopPropagation。选择_container'。on'click'函数可防止触发$document。on'click'

您需要在$document中使用toggleClass。单击也可以


在jquery和javascript中,会出现一个事件,因此必须在容器单击时使用e.stopPropagation。 检查这些页面或,您的问题的可能解决方案可能是

<script type="text/javascript">
$(document).ready(function(){
    var selectFields = {
        init: function(){
           $(document).bind('click',function(e){
              if( !$('ul').hasClass('active')){
                 $('ul').hide()
                 $(this).find('ul.select_elements').toggleClass('active');     
                 }
            }); 

           $('.select_container').on('click',function(e){
                 e.stopPropagation()
                 if( $('ul').hasClass('active')){
                 $('ul').show()
                 }else{ $('ul').hide()   }
                 $(this).find('ul.select_elements').toggleClass('active');
            });

        }
    };

    $(selectFields.init);
})
</script>
当您单击列表时,使用StopRopAgation可防止事件冒泡并被文档捕获 在某些情况下,您还可以使用stopImmediatePropagation,以了解stopPropagation和stopImmediatePropagation之间的区别,请查看此帖子 类似代码以及to和Batu Zet代码的唯一缺点是,如果您希望列表中的项目可以在不消失的情况下被单击,则必须在ul标签上添加另一个stopPropagation 这是决赛

$('.select_container').on('click',function(e){
  $(this).find('ul.select_elements').toggle();
  $(this).find('ul.select_elements').toggleClass('active');
  e.stopPropagation();
});

$(document).on('click',function(){  
  if( $('.select_elements').is(':visible')){
     $('.active').hide();
     $('.select_elements').toggleClass('active');
  }
  else {
     console.log('visible false ...');
  }
});
<script type="text/javascript">
$(document).ready(function(){
    var selectFields = {
        init: function(){
           $(document).bind('click',function(e){
              if( !$('ul').hasClass('active')){
                 $('ul').hide()
                 $(this).find('ul.select_elements').toggleClass('active');     
                 }
            }); 

           $('.select_container').on('click',function(e){
                 e.stopPropagation()
                 if( $('ul').hasClass('active')){
                 $('ul').show()
                 }else{ $('ul').hide()   }
                 $(this).find('ul.select_elements').toggleClass('active');
            });

        }
    };

    $(selectFields.init);
})
</script>