Возможно, существует более предпочтительный объектно-ориентированный способ (см. Замыкания), но вы можете сделать это просто так:
var isInFunction = false;
function myHandler() {
if (isInFunction) {
return;
}
isInFunction = true;
// do function logic
isInFunction = false;
}
Или, в качестве альтернативы, если вы используете функцию анимации jQuery, вам нужно вернуть isInFunction в значение false ПОСЛЕ того, как анимация завершится, поэтому вы должны установить обратный вызов, чтобы установить для этой переменной значение false по истечении промежутка времени, в течение которого анимация занимает.
Имейте в виду, что это означает, что эта переменная будет одинаковой для ВСЕХ изображений, поэтому, если вы хотите иметь возможность анимировать несколько изображений одновременно, вам придется каким-то образом разделять переменные для каждого изображения.
Способ jAndy лучше, чем этот, потому что :animated
уже сделает то, что я предлагаю, и для каждого изображения / элемента, но без каких-либо дополнительных издержек / обратных вызовов с вашей стороны!