2011-09-09 65 views
2

我已經創建了一個jQuery插件用於我自己的系統。問題:我希望系統每1秒更新一次。通常我通過使用setTimeout以及其功能的名稱來記得該功能。但現在,當我在jQuery中使用它不起作用。它有什麼問題,我該如何解決它?如何在jQuery插件中調用函數

(function($){ 
$.fn.OnlineBox = function(options){ 
    var user={}; 
    var container = this; 

    user.id=$(container).children("id").text(); 
    user.name=$(container).children("name").text(); 
    user.sip=$(container).children("sip").text(); 
    user.session=$(container).children("session").text(); 
    user.ip=$(container).children("ip").text(); 

    var func={ 
     updateStatus : function(){ 
      $.ajax({ 
       url: "libs/online.php", 
       type: "POST", 
       data: { 
        "cmd" : "update", 
        "id" : user.id, 
        "name" : user.name, 
        "sip" : user.sip, 
        "session" : user.session, 
        "ip" : user.ip 
       }, 
       dataType: "html", 
       success: function(msg){ 
        str=msg.split(","); 
        $("#OnlineStatus").html(str[0]); 
        $("#OnlineScreen").html(str[1]); 
       } 
      }); 
      setTimeout("updateStatus()",1000); 
     } 

    } 

    func.updateStatus(); 

}; 

})(jQuery); 

回答

1

可以使用arguments.callee,當前函數

setTimeout(arguments.callee,1000); 
參考
0

在那裏沒有名爲updateStatus的函數。然而,有,一個func.updateStatus功能,使您的setTimeout應該是這樣的:

setTimeout(func.updateStatus, 1000); 

此外,調用setTimeout(或setInterval)用一個字符串作爲第一個參數通常被認爲是不好的形式,你最好通過作爲第一個參數的函數。

相關問題