如何创建一个可以杀死点击功能的函数?

时间:2019-06-15 18:30:51

标签: javascript jquery

对,这有点挑战,我不确定是否可能。

但这是场景:

我的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*/

});

就是这样。

有人可以对此提出建议吗?可以这样做吗?

2 个答案:

答案 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*/
});