Javascript 挂起事件侦听器
我有一个带有Javascript 挂起事件侦听器,javascript,css,animation,mootools,Javascript,Css,Animation,Mootools,我有一个带有onclick事件监听器的按钮(在MooTools中)。它很好用。但是,我希望能够使按钮在特定时间不可用,并在必要时再次可用 简单地说:我想“挂起”事件侦听器。这能做到吗?MooTools文档仅用于添加、删除、克隆和传播事件。暂时不要“忽视”他们 我知道解决办法可能在其他地方: 使用一些css隐藏按钮,例如,$('button').setStyle('visibility','hidden'),稍后再显示 一些覆盖,再次隐藏原始元素,并显示替换(例如,灰显按钮) 克隆元素,从原始元素
onclick
事件监听器的按钮(在MooTools中)。它很好用。但是,我希望能够使按钮在特定时间不可用,并在必要时再次可用
简单地说:我想“挂起”事件侦听器。这能做到吗?MooTools文档仅用于添加、删除、克隆和传播事件。暂时不要“忽视”他们
我知道解决办法可能在其他地方:
$('button').setStyle('visibility','hidden')
,稍后再显示我想答案是“不”。这意味着要做上面提到的四件事中的一件,或者我接受的答案中提到的:禁用button HTML元素,从而暂停对事件侦听器的响应。我会看到两种方法:
我认为有两种方法可以做到这一点:
如果库不支持挂起事件,另一个选项是,当您想忽略它时,只需设置一个标志,然后在函数开始时检查它:
function doStuff() {
if (myFlag) {
return;
}
}
如果库不支持挂起事件,另一个选项是,当您想忽略它时,只需设置一个标志,然后在函数开始时检查它:
function doStuff() {
if (myFlag) {
return;
}
}
虽然你已经找到了解决方案,这里的一些答案似乎给了你很好的建议,但我还是完整地写了这篇文章 在我看来,处理问题的正确方法是在“按钮”中添加一个css类(请记住,您可以根据需要添加任意数量的类) (其中button可以是任何类型的元素)并使用如下解决方案检查click处理程序中是否存在该类:
$('button.one').addEvent('click', function(){
if(this.hasClass('disabled'))return;
alert('You just clicked me, guy!');
});
Element.Events.enabledClick = {
base:'click',
condition: function(event){
var trigger = true;
if(this.hasClass('disabled')){
trigger = false;
}
return trigger;
}};
如本例所示:
另一个路径是添加如下自定义事件:
$('button.one').addEvent('click', function(){
if(this.hasClass('disabled'))return;
alert('You just clicked me, guy!');
});
Element.Events.enabledClick = {
base:'click',
condition: function(event){
var trigger = true;
if(this.hasClass('disabled')){
trigger = false;
}
return trigger;
}};
因此,每当您需要将事件处理程序置于休眠状态时,只需在需要的按钮上添加一个“disabled”类,然后将其忘记,要重新启用事件,只需删除“disabled”类,
您只需使用addEvent('enabledClick',…)而不是addEvent('click',…)
在这把小提琴上使用与上述相同的示例,使用以下技术:
在我的示例中,我刚刚使用css中的.disabled类将按钮样式设置为disabled,但如果您希望使其消失,可以使用tween设置不透明度:
虽然你已经找到了解决方案,这里的一些答案似乎给了你很好的建议,但我还是完整地写了这篇文章 在我看来,处理问题的正确方法是在“按钮”中添加一个css类(请记住,您可以根据需要添加任意数量的类) (其中button可以是任何类型的元素)并使用如下解决方案检查click处理程序中是否存在该类:
$('button.one').addEvent('click', function(){
if(this.hasClass('disabled'))return;
alert('You just clicked me, guy!');
});
Element.Events.enabledClick = {
base:'click',
condition: function(event){
var trigger = true;
if(this.hasClass('disabled')){
trigger = false;
}
return trigger;
}};
如本例所示:
另一个路径是添加如下自定义事件:
$('button.one').addEvent('click', function(){
if(this.hasClass('disabled'))return;
alert('You just clicked me, guy!');
});
Element.Events.enabledClick = {
base:'click',
condition: function(event){
var trigger = true;
if(this.hasClass('disabled')){
trigger = false;
}
return trigger;
}};
因此,每当您需要将事件处理程序置于休眠状态时,只需在需要的按钮上添加一个“disabled”类,然后将其忘记,要重新启用事件,只需删除“disabled”类,
您只需使用addEvent('enabledClick',…)而不是addEvent('click',…)
在这把小提琴上使用与上述相同的示例,使用以下技术:
在我的示例中,我刚刚使用css中的.disabled类将按钮样式设置为disabled,但如果您希望使其消失,可以使用tween设置不透明度:
我已经将Twitter Bootstrap Button.js移植到mootools,或者从mootools forge移植到mootools。JSFIDLE演示-它提供了各种方法来禁用按钮,可以通过调用(附加禁用的属性+css类)或者在单击一段时间后禁用。也许你可以使用这些。有趣的东西。这是真正的“管理”你的按钮,而不仅仅是在按钮上添加一个
onclick
来做一些事情。然而,我真的不需要更多。不过,为了将来的发展,我会记住这一点。谢谢。我已经将Twitter Bootstrap Button.js移植到mootools,或者从mootools forge移植到了mootools。JSFIDLE演示-它提供了各种方法来禁用按钮,可以通过调用(附加禁用的属性+css类)或者在单击一段时间后禁用。也许你可以使用这些。有趣的东西。这是真正的“管理”你的按钮,而不仅仅是在按钮上添加一个onclick
来做一些事情。然而,我真的不需要更多。不过,为了将来的发展,我会记住这一点。谢谢。我不想删除并重新添加侦听器,这可能会变得很混乱。选项1看起来是个不错的主意,尽管它不是直接指向侦听器,但它是通过HTML实现的。但是,我的按钮目前封装在一个
中,因此我应该将其设置为
,但这更正确(更好?)