无法在jquery中定义一个函数? ......未定义

时间:2012-05-31 00:05:47

标签: javascript jquery

我正在尝试做一些我认为很简单但我需要帮助的事情。

在jquery函数中我想设置一个计时器并从另一个函数中清除它....

(function($){

var mnuTimer;
var mnuDown;

$('.nav-menu .parent').hover(function(){
    clearTimeout(mnuTimer);//clear function
    $(this).children('.children').slideDown();
    $(this).css('background-color','#fff0c8');
},
function(){
    function mnuDown(){//set function for timer experation
      $(this).children('.children').slideUp('fast');
      $(this).css('background-color','transparent');
      }
    mnuTimer = setTimeout("mnuDown()",1000)//timer
});

})(jQuery);

所以我唯一无法工作的部分是计时器。 “mnuDown”函数未定义。我已经尝试了很多不同的方法来使它工作,除了在jquery“(function($){”之外声明函数之外似乎没有什么是正确的。这不起作用,因为我使用jquery的全部原因是应用在jquery之外不可用的slideUp动画.AHHH帮助,谢谢

1 个答案:

答案 0 :(得分:2)

  

重复this answer

是的,不是函数的声明是问题,而是[变量]引用它:你没有。相反,setTimeout("mnuDown()",1000)将评估全局范围内的代码字符串 - 在那里找不到mnuDown。您需要将函数引用传递给setTimout()

mnuTimer = setTimeout(mnuDown,1000); //timer