Есть и другие способы сделать это.
1. Использование анонимной функции (рекомендуется)
setTimeout(function() {
hideMenu('someNum');
}, 200);
2. setTimeout
и setInterval
имеют скрытую функцию: вы можете указать параметры по истечении времени ожидания.
setTimeout(hideMenu, 200, params);
Поскольку вы уже используете jQuery, вам не следует создавать отдельную функцию, а вместо этого расширять прототип jQuery, например:
jQuery.fn.hideMenu = function() {
this.removeClass('clicked');
return this;
};
Использование:
$('#num').hideMenu();
Обратите внимание, что вам не нужно передавать this
в jQuery при расширении его прототипа, потому что он уже передан в jQuery. И return this;
требуется для сохранения способности цепочки.
Если вы выберете этот способ, вам нужно использовать анонимные функции, более простого способа нет.
Обновление
Для этого уже есть плагин: jQuery.hoverIntent()
. Не нужно делать это самостоятельно. Его легко использовать, просто замените событие mouseleave
на следующее:
$('#someNum').hoverIntent(jQuery.noop, function() {
// your function goes here
});
Важно сделать это таким образом, поскольку первый - это обработчик mouseenter
, а второй - обработчик mouseleave
. jQuery.noop
- пустая функция, по сути, такая же, как function() {}
.