这是问题的简化版本。
单击button
,我需要调用function abc
并停止执行abc and click
这两个功能,如果x == 5
;
当前情况-abc
被取消,但click
继续执行。
function abc(){
if(x == 5){return;}
console.log('abc');
}
var x = 5;
$('button').on('click', function(){
abc();
console.log('clicked');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>CLICK</button>
答案 0 :(得分:1)
如果我对您的理解正确,则只需要返回abc
的结果并进行测试:
function abc(){
if(x == 5){
return false;
}
console.log('abc');
return true;
}
var x = 5;
$('button').on('click', function(){
if (abc()){
console.log('clicked');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>CLICK</button>
顺便说一句,您应该avoid defining global variables (x
) like this。而是使用闭包定义范围变量。更像是:
var closure = function(){
function abc(){
if(x == 5){
return false;
}
console.log('abc');
return true;
}
var x = 5;
return {abc:abc};
}();
$('button').on('click', function(){
if (closure.abc()){
console.log('clicked');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>CLICK</button>
答案 1 :(得分:1)
作为阻止单击操作执行任何其他不需要的操作的答案(例如,如果您的按钮是表单中的“提交”按钮,则停止提交表单,或者阻止链接实际访问链接的URL ),您想使用事件的preventDefault()
方法:
function abc() {
console.log('abc');
}
$('button').on('click', function(e){
if(x == 5) {
e.preventDefault();
abc();
}
console.log('clicked');
});
var x = 5;