将var从一个扩展函数传递到另一个

问题描述:

我无法通过$.PhotoUpdater.doUpdate(url)的URL来执行doUpdate函数。将var从一个扩展函数传递到另一个

火狐返回此错误:

useless setTimeout call (missing quotes around argument?) 
[Break on this error] timer = setTimeout($.PhotoUpdater.doUpdate(url), 5000) 

我的代码:

$.extend({ 
    PhotoUpdater: { 

    startUpdate: function(organization, gallery){ 
     url = "/organizations/" + organization + "/media/galleries/" + gallery + "/edit_photo_captions" 
     timer = setTimeout($.PhotoUpdater.doUpdate(url), 5000) 
    }, 
    stopUpdate: function(){ 
     clearTimeout(timer); 
     timer = 0; 
    }, 
    doUpdate: function(url){ 
     $.ajax({type: "GET", url: url, dataType: "script"}); 
    } 
    } 
}); 

我怎么称呼它:

$.PhotoUpdater.startUpdate("#{@organization.id}", "#{@gallery.id}"); 

你需要一个函数传递到window.setTimeout,不是调用函数的结果:

startUpdate: function(organization, gallery){ 
    url = "/organizations/" + organization + "/media/galleries/" + gallery + "/edit_photo_captions"; 
    timer = window.setTimeout(function() { 
     $.PhotoUpdater.doUpdate(url) 
    }, 5000); 
},