2012-10-12 94 views
0

代码:递归函数:我在哪里错了?

isDomLoaded = $(function() { 
    setTimeout(function() { 
     if (renderFinished) { 
      renderSocial(fotoProssima); 
     } else { 
      isDomLoaded(); 
     } 
    }, 300); 
}); 

它说:isDomLoaded is not a function

+0

也许有一些我缺少的上下文,但为什么你要将函数声明作为参数传递给$函数,然后将**返回给isDomLoaded的值**。 –

+0

因为你把它转换成一个jQuery对象... – Shmiddty

+0

你为什么要这么做呢?你不能只使用'$(function(){...});'?只有当DOM完全加载时,才会调用该函数... – Shmiddty

回答

11

那是因为它不是一个功能。它是一个jQuery对象。

你所需要的可能是:

isDomLoaded = function() { 
    setTimeout(function() { 
     if (renderFinished) { 
      renderSocial(fotoProssima); 
     } else { 
      isDomLoaded(); 
     } 
    }, 300); 
}; 

如果你想运行它时,DOM是准备那么做,你声明函数后:

$(window).load(isDomLoaded); 

不过,我想你真正需要的是摆脱isDomLoaded功能,只需使用下列内容:

$(document).ready(function(){ 
    renderSocial(fotoProssima); 
}); 
+0

呃......那么我怎样才能调用这个函数,第一次执行它呢? – markzzz

+0

看我上面的代码 –

+0

好的,但它不会自动执行第一次... – markzzz

1
function isDomLoaded(){ 
    //code 

    //recursive call 
    isDomLoaded(); 
}