I have an anchor which is using jQuery .click event to start a few functions.
jQuery(document).ready(function(){
jQuery(\'a.slide_circ\').click(functio
Use the .data method to assign the state to the element. Then, use setTimeout
to reset the state:
jQuery(document).ready(function() {
jQuery('a.slide_circ').click(function() {
var $this = jQuery(this);
if ($this.data('activated')) return false; // Pending, return
$this.data('activated', true);
setTimeout(function() {
$this.data('activated', false)
}, 500); // Freeze for 500ms
do_all_functions();
return false;
});
});
A few ways to do it, but one way is:
jQuery(document).ready(function(){
var do_all_functions_running = false;
jQuery('a.slide_circ').click(function(){
if (!do_all_functions_running) {
do_all_functions_running = true;
do_all_functions();
do_all_functions_running = false;
}
return false;
});
});
Not perfect, but it'll work.
You can check the last date of the run, and cancel if it was less than half a second ago:
jQuery(document).ready(function() {
jQuery('a.slide_circ').each(function() {
var lastRun = null;
$(this).click(function() {
if(lastRun && new Date() - lastRun < 500) {
// Less than 500ms; ignore.
return false;
}
// Set the last run:
lastRun = new Date().getTime();
// Continue:
do_all_functions();
return false;
});
});
});
It has the advantage of being a little more efficient.