Почему firebug говорит, что мой вызов функции не определен - PullRequest
0 голосов
/ 29 октября 2010

У меня есть меню навигации, которое содержит подменю.При наведении курсора я хочу, чтобы подменю показывалось после второй задержки.Пункты меню, помеченные классом «more», содержат подменю.

Проблема в том, что одна из моих функций hoverCheck () возвращается как неопределенная при вызове.Но я не могу понять, почему.

Вот мой код:

$(document).ready(function() {
 navigation();
});

function navigation() {
 var moreMenu = $('.nav li.more');
 var hovering;

 function hoverCheck() {
  hovering = 'hover';
  openMenu();
 }

 function openMenu() {
  if(hovering == 'hover') {
   $(this).children('ul').slideDown('fast');
  } 
 }

 moreMenu.mouseenter(function() {
  setTimeout("hoverCheck()",1000);
 });
 moreMenu.mouseleave(function() {
  hovering = null;
  $(this).children('ul').slideUp('fast');
 });

}

Ответы [ 2 ]

4 голосов
/ 29 октября 2010

Вы получаете сообщение об ошибке, потому что эта функция не определена в глобальной области, вместо этого вам следует сделать следующее:

setTimeout(hoverCheck, 1000);

Как правило, старайтесь всегда избегать передачи строки в setTimeout(), дайте ему ссылку на функцию напрямую - в противном случае вы можете столкнуться с проблемами с областями видимости, например так:)

0 голосов
/ 29 октября 2010

Функция setTimeout принимает выражение в качестве первого аргумента, а не имя функции.Если вы замените

setTimeout("hoverCheck()",1000);

на

setTimeout(function() {hoverCheck();}, 1000);

, это может помочь.

...