Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 JS下拉插入符号动画打断输入_Javascript_Jquery_Html - Fatal编程技术网

Javascript JS下拉插入符号动画打断输入

Javascript JS下拉插入符号动画打断输入,javascript,jquery,html,Javascript,Jquery,Html,我有一个导航栏,包括一个下拉列表。下拉列表中有Javascript,单击下拉按钮时会更改插入符号的方向。但是,单击下拉列表中的任何空间时,下拉列表将塌陷。我在下拉列表中有一个搜索栏,无法使用。我如何改变javascript,使其只在单击按钮时折叠和展开 Javascript <script> $(document).ready(function(){ $('.dropdown').click(function(e){ $(this).find('.dropdown-men

我有一个导航栏,包括一个下拉列表。下拉列表中有Javascript,单击下拉按钮时会更改插入符号的方向。但是,单击下拉列表中的任何空间时,下拉列表将塌陷。我在下拉列表中有一个搜索栏,无法使用。我如何改变javascript,使其只在单击按钮时折叠和展开

Javascript

<script>
$(document).ready(function(){
  $('.dropdown').click(function(e){
    $(this).find('.dropdown-menu').toggleClass('show');
    $($(e.target).find('.down-caret').toggleClass('open-caret'));
    e.preventDefault();
    e.stopPropagation();
    $(document).click(function(){
      $('.dropdown-menu').removeClass('show');
      $('.down-caret').removeClass('open-caret');
    });
  });
});
</script>

$(文档).ready(函数(){
$('.dropdown')。单击(函数(e){
$(this).find('.dropdown menu').toggleClass('show');
$($(e.target).find('.down-caret').toggleClass('open-caret'));
e、 预防默认值();
e、 停止传播();
$(文档)。单击(函数(){
$('.dropdown menu').removeClass('show');
$('down-caret').removeClass('open-caret');
});
});
});

首先,我想你可以移动

$(document).click(function(){
    $('.dropdown-menu').removeClass('show');
    $('.down-caret').removeClass('open-caret');
});
退出单击侦听器以获得下拉列表。否则,您将在每次打开下拉列表时附加侦听器。此外,如果页面上只有一个
。向下插入符号
,则可以简化

$($(e.target).find('.down-caret').toggleClass('open-caret'));

然后,您可以尝试过滤侦听器以关闭下拉列表

$(document).not('#search').click(function(){...}
使用您识别搜索栏的方式。另一种方法是捕获搜索栏的单击事件并停止传播

$('#search').click(function(){
    return false;
});
考虑到所有这些因素,修改后的代码可能类似于:

<script>
$(document).ready(function(){
  $('.dropdown').click(function(e){
    $('.dropdown-menu').addClass('show');
    $('.down-caret').addClass('open-caret');
    e.preventDefault();
    e.stopPropagation();
  });
  $(document).not('#search').click(function(){
    $('.dropdown-menu').removeClass('show');
    $('.down-caret').removeClass('open-caret');
  });
});
</script>

$(文档).ready(函数(){
$('.dropdown')。单击(函数(e){
$('.dropdown menu').addClass('show');
$('.down-caret').addClass('open-caret');
e、 预防默认值();
e、 停止传播();
});
$(文档)。不是(“#搜索”)。单击(函数(){
$('.dropdown menu').removeClass('show');
$('down-caret').removeClass('open-caret');
});
});
<script>
$(document).ready(function(){
  $('.dropdown').click(function(e){
    $('.dropdown-menu').addClass('show');
    $('.down-caret').addClass('open-caret');
    e.preventDefault();
    e.stopPropagation();
  });
  $(document).not('#search').click(function(){
    $('.dropdown-menu').removeClass('show');
    $('.down-caret').removeClass('open-caret');
  });
});
</script>