简体   繁体   中英

Stop a jquery function execution twice

I want a js function executed once in my code.Either in resize or load handler .I have a function which is executed if one statement is true and another in the window resize.So when my statement is true then the function is executed and i do not want the function executed again if the window is resized.

My js codes are

if(vertical){
     vertical();
}

And

$(window).resize(function(){
   vertical();
}

And

var vertical = function(){
  ..........
}

i also prevent execution if window is resized multiple times

You have to use some kind of flags for that:

var flag = false;

function vertical() {
   if (!flag) {
       flag = true;
       // do your job
   }
}

You could solve this via a semaphore.

So you set a flag to false and before you call the function you only want to call once check if(flag) , execute the code and set flag to true

Add a variable to check if the function is fired

var execute = true;
if(vertical){
    if (execute) {    
        vertical();
        execute = false;
    }

}
$(window).resize(function(){
   if (execute) {    
        vertical();
        execute = false;
    }
}

只需在vertical()函数的末尾使用unbind函数,这样当它首先执行时,它将为下一次窗口调整大小解除绑定事件。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM