2011-09-09 28 views
2

自分のシステムで使用するjQueryプラグインを1つ作成しました。問題:システムを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という名前の機能はありません。あなたのsetTimeoutは次のようになりますので、func.updateStatus機能は、しかし、があります:最初の引数は、一般的に悪いフォームと見なされるよう

また
setTimeout(func.updateStatus, 1000); 

を、setTimeout(またはsetInterval)を呼び出す文字列で、あなたは合格方がいいでしょう最初の引数としての関数。

関連する問題