Javascript 禁用OnClick事件,直到首先触发另一个事件
我有6个div(Javascript 禁用OnClick事件,直到首先触发另一个事件,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有6个div(.selector)要执行(onclick): 显示所有表格 显示序号1,隐藏其余部分 显示序号2,隐藏其余部分 显示编号5,隐藏其余部分 它们还切换一个类“已激活”,以更改背景颜色 我试图做的是,一旦我单击“Show Nº1,Hide rest”,禁用单击选项(在此div上),直到我首先单击另一个选项,如“Show all tables”或“Show Nº2,Hide rest” 类似于“一次功能”,但一旦另一个div被激活就会重置。有办法吗 这是我的CSS 选择器{ 高度
.selector
)要执行(onclick
):
“已激活”
,以更改背景颜色
我试图做的是,一旦我单击“Show Nº1,Hide rest”,禁用单击选项(在此div上),直到我首先单击另一个选项,如“Show all tables”或“Show Nº2,Hide rest”
类似于“一次功能”,但一旦另一个div被激活就会重置。有办法吗
这是我的CSS
选择器{
高度:25px;
宽度:25px;
背景色:#702C3D;
左边距:2倍;
右边距:2px;
浮动:左;
光标:指针;
}
.选择器已激活{
背景色:#000000;
}
这是我的JavaScript
$('.selector').on('click', function(event) {
$('.selector').not(this).removeClass('activated');
$(this).toggleClass('activated');
});
你应该能做到
if($(this).hasClass('activated'))
return;
如果这是allready激活的,则跳过它。有两件事要做:
功能点击事件(元素){
元素绑定('click',函数(事件){
$('.selector').not(this.removeClass('activated');
$(this.toggleClass('activated');
$('.selector')。取消绑定('click');
clickEvent($('.selector')。而不是(this));
});
}
clickEvent($('.selector'))代码>
选择器{
高度:25px;
宽度:25px;
背景色:#702C3D;
颜色:#FFF;//用于显示
左边距:2倍;
右边距:2px;
浮动:左;
光标:指针;
}
.选择器已激活{
背景色:#000000;
}
123456
如果在单击功能中将切换类
更改为添加类
。然后,在中单击一次以上。激活的将无效(因为单击被禁用):
或者,您可以检查单击的.selector
是否已激活.activated
类,如:
$('.selector').on('click', function(event) {
if($(this).is('.activated')) return;
$('.selector').not(this).removeClass('activated');
$(this).toggleClass('activated');
});
请您创建一个工作类,这样我们可以更方便地帮助您。如果您不想在单击两次时更改类,您不是真的只是请求addClass
而不是toggleClass
?@MoshFeu是的,对不起,上次我有一个问题,我将代码复制到了jsfiddle.net,但这次我无法让它工作。下一次我有问题时,我会确保创建一个问题,这样会更容易!:)@这正是我想做的,我会给下面建议同样事情的人正确的答案,但也谢谢你!我接受了另一个正确的答案,因为我更容易理解他在做什么(仍在学习,所以我想尝试了解我的每一行代码都做了什么,而无需以后寻求帮助)。但是感谢“包装JavaScript”的建议,我没有考虑过这样做然后调用函数!谢谢这正是我想要做的。两个选项都试过了,没有问题,但我可能会选择第二个。很高兴看到我可以保留所有的旧代码,只需要做一些小的调整就可以了,因为我还在学习。是的,出于性能原因,我推荐第二个。欢迎你,祝你好运。
$('.selector').on('click', function(event) {
if($(this).is('.activated')) return;
$('.selector').not(this).removeClass('activated');
$(this).toggleClass('activated');
});