2011-04-27 149 views
1

我努力找出为什么setTimeout函数在试图运行时找不到我的单选按钮标记功能。函数未定义?

这是我的代码...

var radioButtonTagging = (function(){ 
    console.log('run');       
    $("span.radio").each(function(i, ele){ 
     $(ele).addClass('radio'+i);      
    }); 

    $(".radio1").click(function(){ 
     console.log('fired'); 
     $('#expandQuestion1').css('display','block'); 
    }); 
}); 

if($('span.radio').length){ 
    console.log('run'); 
    radioButtonTagging(); 
} else { 
    console.log('trying to run timer'); 
    setTimeout("radioButtonTagging()",2000); 
} 

http://pastebin.com/nvacxZGS

基本上,我只是想找一类无线电跨度和增加无线电加上指数另一类。

为什么我使用setInterval的原因是因为当它试图解雇在第一时间跨度的不到位,因为他们正在通过jQuery插入..所以不doc.ready期间完成..

任何帮助将是伟大的

回答

6

您正在传递一个字符串到setInterval,所以它在不同的范围内evaled。由于您正在查找的功能在本地范围内,因此无法找到它。

不要将字符串传递给setInterval,传递函数。

0

试试这个

setTimeout(function(){ radioButtonTagging() },2000); 
+3

这是多余的。只需使用'radioButtonTagging',它是等价的,但不会返回值。 – delnan 2011-04-27 12:35:36

0

尝试: 的setTimeout(radioButtonTagging,2000年);

在这里看到: http://jsfiddle.net/qUAZf/

+0

谢谢两个,我解析它的功能减去引用,似乎工作.. – Owzzz 2011-04-27 13:22:39