当条件返回true时,我有许多按钮必须自我阻止。像打击不起作用的东西。怎么做那么优雅?
$('#button1,#button2,#button3').click(function(event){
if(maintence_mode){
event.preventDefault(); // alerts can't be shown
}
});
$('#button1').click(function(){
alert('1');
});
$('#button2').click(function(){
alert('2');
});
$('#button3').click(function(){
alert('3');
});
更新:
我现在有类似下面的内容,但不适用于event.stopImmediatePropagation()
。我认为请求/isservicemode
需要一些时间......
var checkServiceMode = function(callback) {
$.get('/isservicemode', function(data){
callback(data.mode);
});
}
$('#button1,#button2,#button3').click(function(event){
checkServiceMode(function(modeon){
if(modeon) {
event.preventDefault();
event.stopImmediatePropagation();
return false;
}
});
});
答案 0 :(得分:1)
你可以停止进行传播。 Demo
出于演示目的,我在5秒后将mainence_mode重置为false,以便再次点击。
var maintence_mode = true;
$('#button1,#button2,#button3').click(function(event){
if(maintence_mode){
event.preventDefault(); // alerts can't be shown
event.stopImmediatePropagation();
return false;
}
});
$('#button1').click(function(){
alert('1');
});
$('#button2').click(function(){
alert('2');
});
$('#button3').click(function(){
alert('3');
});
setTimeout(function(){
maintence_mode = false;
},5000);
答案 1 :(得分:0)
var maintence_mode = true;
$('#button1,#button2,#button3').click(function(event){
if(maintence_mode){
event.preventDefault(); // alerts can't be shown
}
else{
alert($(this).text().split("")[1])
}
});
答案 2 :(得分:0)
您应该在其他地方管理您的代码:
var maintence_mode = true;
$('#button1,#button2,#button3').click(function(event){
if(maintence_mode){
event.preventDefault(); // alerts can't be shown
} else{
$('#button1').click(function(){
alert('1');
});
$('#button2').click(function(){
alert('2');
});
$('#button3').click(function(){
alert('3');
});
}
});
答案 3 :(得分:0)
使用事件停止传播功能。
演示:http://jsfiddle.net/e5mkvrjq/
var maintence_mode = true;
$('#button1,#button2,#button3').click(function(event){
if(maintence_mode){
event.stopPropogation(); // alerts can't be shown
}
});
$('#button1').click(function(){
alert('1');
});
$('#button2').click(function(){
alert('2');
});
$('#button3').click(function(){
alert('3');
});