Ваши операторы if
определяют только, зарегистрированы ли обработчики событий mouseover
/ mouseout
.Это так, потому что false
- это ... ну, не так.
Позже значение executed
меняется, но это уже не имеет значения, потому что эти операторы if
больше не выполняются,Обработчики событий уже зарегистрированы и вызываются.
Возможно, вы захотите сделать это вместо этого:
$('.elm').mouseover(function(event) {
if (executed != true) {
// do something only if variable is not set to true
}
});
Т.е. всегда регистрируйте обратный вызов, но проверьте переменную executed
внутри функция, каждый раз, когда она вызывается.
Вы можете немного упростить эту логику:
$('.elm').mouseover(function(event) {
if (executed) {
return;
}
// do something only if variable is not set to true
});
Просто вернитесь рано, если executed
истинно.Таким образом, вам не нужно помещать все тело функции в оператор if
.