对,这有点挑战,我不确定是否可能。
但这是场景:
我的jquery代码中具有多个点击功能,如下所示:
$(document).on('click','.myelement',function(e){
/*my code goes here*/
});
现在,我需要创建一个单个函数来检查某些内容。
像这样:
checkforsomething function (){
if(something positive happens){
/*all good and do nothing*/
}else{
/*STOP/KILL the clicked function and give an error*/
alert('error happend');
}
}
现在,我需要在所有点击功能中都使用此功能,如下所示:
$(document).on('click','.myelement',function(e){
checkforsomething();
/*my code goes here*/
});
就是这样。
有人可以对此提出建议吗?可以这样做吗?
答案 0 :(得分:1)
您要寻找的是preventDefault()
;
$(document).on('click','.myelement', function(event){
if(something positive happens){
/*all good and do nothing*/
}else{
event.preventDefault();
}
}
处理事件时,您不想返回false。它可能在这里起作用,但是当同一元素(或该元素的子元素)有多个事件时,将导致产生奇怪的结果。因此,如果发生事件:preventDefault()
。
如果要在条件检查中将其用作函数,则可以返回true / false:
if( myCustomFunction() ){ /* do something */ }
这是因为没有其他这样的事件被阻塞,您(简单地说)仅将if条件的内容移到了函数中。条件检查是非。
答案 1 :(得分:1)
让checkForSomething返回true或false指示是否继续,然后让事件侦听器根据该值决定要做什么。
function checkForSomething() {
if (something positive happens) {
return true;
}
return false;
}
$(document).on('click','.myelement',function(e)
if (!checkforsomething()) {
alert('error happened');
return;
}
/*my code goes here*/
});