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')
)