【问题标题】:Problem with jquery inside OOP functionOOP函数中的jquery问题
【发布时间】:2011-07-18 07:45:29
【问题描述】:

您好,我正在尝试在我的 OOP 函数中获取隐藏元素的值。这是代码:

var refreshTimeout;
var rms = new RMS();
rms.refresh();

function RMS() {
    this.refresh = function(){
        alert($("#ids").val());
        $.post(refreshUrl, {ids: $("#ids").val()}, function(response){
            var result = $.parseJSON(response);

            if (result != null) {
                $("#rms").attr("value", result.rms);
            }

            refreshTimeout = setTimeout(function() { rms.refresh(); }, 2000);
        });
    }
}

问题是 $("#ids").val() 在 firebug 控制台中工作,但不在 rms.refresh() 中...

我做错了什么?

【问题讨论】:

  • 您的 Javascript 是否包含在文档就绪函数中?

标签: javascript jquery oop


【解决方案1】:

您对$('#ids').val() 的调用看起来不错,只要此时加载了DOM(即在$(document).ready() 块内)。

不过,您的计时器功能看起来有点可疑。您指的是外部范围内的rms,而您应该指的是当前对象是什么。

同样,您的与计时器相关的值应正确封装在类中,否则您不能拥有多个实例。

// class definition - can be loaded anywhere
var RMS = function(ids, rms) {

    var self = this;
    var timer = null;
    var delay = 2000;

    this.refresh = function() {
        $.post(refreshUrl, {ids: $(ids).val()},
            function(response) {
                var result = $.parseJSON(response);
                if (result != null) {
                    $(rms).attr("value", result.rms);
                }

                timer = setTimeout(function() {
                    self.refresh();
                }, delay);
            }
        );
    };
};

// invocation deferred until the DOM is ready
$(document).ready(function() {
   var rms = new RMS('#ids', '#rms');
   rms.refresh();
});

【讨论】:

    【解决方案2】:

    试试这个代码:

    $(document).ready(function(){
        var refreshTimeout,
            rms = new RMS();
    
        rms.refresh();
    
        function RMS() {
            this.refresh = function(){
                $.post(refreshUrl, {ids: $('#ids').val()}, function(response){
                    if (typeof(response) != 'undefined') {
                        $('#rms').attr('value', response.rms);
                    }
                    refreshTimeout = setTimeout(function() { rms.refresh(); }, 2000);
                }, 'json');
            }
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-25
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 2021-02-17
      • 2012-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多