Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/376.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单击功能在能够重新单击之前完全执行_Javascript_Jquery - Fatal编程技术网

Javascript Jquery单击功能在能够重新单击之前完全执行

Javascript Jquery单击功能在能够重新单击之前完全执行,javascript,jquery,Javascript,Jquery,我有一个面板,当单击按钮时可以切换,这取决于类是否位于面板上。如果用户在滑动打开面板的过程中多次单击按钮,则会导致显示问题,因为该按钮尝试执行多次,而其仅打算执行一次 我如何才能使面板只在一次单击时启动,而在执行时忽略多次单击-只有在功能完成后才能再次切换 $('.options_search_tab').click(function () { if (!$("#collapsePanel").hasClass("in")) { $('#options_search_btn').

我有一个面板,当单击按钮时可以切换,这取决于类是否位于面板上。如果用户在滑动打开面板的过程中多次单击按钮,则会导致显示问题,因为该按钮尝试执行多次,而其仅打算执行一次

我如何才能使面板只在一次单击时启动,而在执行时忽略多次单击-只有在功能完成后才能再次切换

$('.options_search_tab').click(function () {

   if (!$("#collapsePanel").hasClass("in")) {
    $('#options_search_btn').toggle();

} });

您可以像这样绑定
关闭
,然后再绑定
打开

  $(".options_search_tab").off("click").on("click",function (event) {
      if (!$("#collapsePanel").hasClass("in")) {
     $('#options_search_btn').toggle();

   } });

.off()方法将删除与.on()附加的事件处理程序。

最好的做法是不解除事件绑定,而只是在以后重新绑定。改为使用布尔值

var active = true;
$(".options_search_tab").click(function(){
   if(active){
       return;
   }
   active = false;
   if (!$("#collapsePanel").hasClass("in")) {
      $('#options_search_btn').toggle();
      active = true; // activate it again
   }
});
$(“#options_search_btn”)是(“:animated”)


i、 e

不必重复绑定,这将使用jQuery的自定义
:animated
选择器专门检查动画是否正在运行



或者:
$('#选项_搜索_btn')。停止()。切换()
应该停止动画并将其反转,这样可以优雅地处理多次单击


事实上,作为一般做法,我建议总是在动画之前添加
.stop()

我认为您需要的是jQuery的
stop()
方法:

$(文档).ready(函数(){
$('go')。在('click',function()上{
$('.panel').stop(true).滑动切换(1500);
});
});
.panel{
宽度:300px;
高度:300px;
背景:青色;
位置:绝对位置;
}
#去{
页边顶部:305px;
}


转到
面板和相关html在哪里?如果您知道面板切换需要多长时间才能完全执行,您可以使用setTimeout在两次单击之间进行阻止。这真的很酷,我不知道!我很欣赏这个答案,但罗伯特获得了投票权,因为他的答案更直接地解决了这个问题。如果我能投票选出两个答案,我会:P,但谢谢!
if (
  !$("#collapsePanel").hasClass("in") && 
  !$('#options_search_btn').is(':animated')
)