2011-04-27 10 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

나는 기본적으로 그냥 클래스 라디오 스팬을 찾고 라디오 플러스 인덱스에 추가 클래스를 추가 해요 ... 내 코드입니다.

이 .. 스팬의 자리에 그들이 jQuery를 통해 삽입되는되지 않는 한 처음 발사 할 때 너무 doc.ready 동안 완료되지 않았기 때문에 나는 setInterval을 사용하고있는 이유는 ..

도움이 될 것입니다.

답변

6

setInterval에 문자열을 전달하므로 다른 범위에서 평가됩니다. 찾고있는 기능이 로컬에 있으므로 범위를 찾을 수 없습니다.

문자열을 setInterval에 전달하지 말고 함수를 전달하십시오.

0

노력이

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

합니다. 동등하지만 반환 값을 삼키지 않는'radioButtonTagging'을 사용하십시오. – delnan

0

시도 : 에서는 setTimeout (radioButtonTagging, 2000);

는 여기를 참조하십시오 : 중복 http://jsfiddle.net/qUAZf/

+0

둘 다 고마워, 나는 함수를 뺀 빼기 함수를 파싱했다. – Owzzz

관련 문제